Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
108
Добавлен:
17.04.2013
Размер:
295.94 Кб
Скачать

Выводы.

Для доказательства сходимости полученной конечно-разностной схемы я проверил условия теоремы, приведенной в использованной мною литературе, для матрицы А данной задачи. Теорема утверждает, что если А – самосопряженный и положительно определённый оператор в пространстве сеточных функций и оператор(т.е. положительно определен в), тогда стационарный двухслойный итерационный процесс сходится в нормек точному решениюu системы. ГдеB=D+L, D - диагональ матрицы А,L - элементы матрицы А, расположенные ниже главной диагонали. Для метода Зайделя. Текст программы shod.m, реализующей эту проверку можно найти в Приложении 4. В случае невыполнения одного из условий теоремы, программа выдаёт соответствующее сообщение об ошибке, иначе сообщение о положительном результате проверки. В данном случае проверка матрицы А дала положительный результат.

Таблица 2. Результаты вычислений программы kurs.m при значениях N=M=10, .

i \ j

0

1

2

3

4

5

6

7

8

9

10

0

0

0

0

0

0

0

0

0

0

0

0

1

0

0.0012

0.0026

0.0111

0.0210

0.0339

0.0495

0.0683

0.0913

0.1198

0.1564

2

0

0.0023

0.0129

0.0291

0.0494

0.0749

0.1056

0.1425

0.1871

0.2415

0.3090

3

0

0.0095

0.0273

0.0521

0.0831

0.1208

0.1657

0.2192

0.2831

0.3601

0.4540

4

0

0.0177

0.0440

0.0784

0.1200

0.1694

0.2273

0.2953

0.3758

0.4719

0.5878

5

0

0.0272

0.0632

0.1075

0.1594

0.2195

0.2888

0.3691

0.4629

0.5740

0.7071

6

0

0.0377

0.0841

0.1386

0.2006

0.2705

0.3494

0.4392

0.5427

0.6642

0.8090

7

0

0.0494

0.1072

0.1723

0.2440

0.3226

0.4092

0.5056

0.6147

0.7410

0.8910

8

0

0.0629

0.1331

0.2092

0.2904

0.3768

0.4692

0.5692

0.6793

0.8042

0.9511

9

0

0.0790

0.1633

0.2511

0.3416

0.4350

0.5317

0.6325

0.7393

0.8553

0.9877

10

0

0.1000

0.2000

0.3000

0.4000

0.5000

0.6000

0.7000

0.8000

0.9000

1.0000

Текст основной программы kurs.M.

% Ввод числа разбиений по X и по Y.

M = input('Введите размерность сетки по X: ');

N = input(' Введите размерность сетки по Y: ');

h1 = 1/M;

h2 = 1/N;

q = h2/h1;

% Ввод погрешности вычислений.

ep = input(' Введите погрешность вычислений (ep): ');

% Начальное заполнение искомой матрицы.

u = ones(M+1, N+1);

x = zeros(M+1,1);

y = zeros(N+1,1);

% Аппроксимация правой части

f = -1.*ones(size(u));

% Аппроксимация граничных условий по X и заполнение служебного

% массива x(i).

for i = 1:(M+1),

u(i,1) = 0;

u(i,N+1) = sin(pi*(i-1)*h1/2);

x(i) = (i-1)*h1;

end

% Аппроксимация граничных условий по Y и заполнение служебного

% массива y(i).

for j = 1:(N+1),

u(1,j) = 0;

u(M+1,j) = (j-1)*h2;

y(j) = (j-1)*h2;

end

k = 0; % Инициализация числа выполненных шагов.

% Ввод параметра сходимости (рекомендуется mu = 1.5485).

mu = input('Введите параметр сходимости mu ( 1<mu<2 ): ');

% Ввод максимального числа шагов.

MAX = input('Введите максимальное число шагов MAX: ');

% Инициализация погрешности вычислений.

A = 100;

% Заблаговременное вычисление коэффициентов для ускорения

% рекуррентной процедуры.

a1 = 1/(2*(1+q^2));

a2 = q^2;

a3 = h2^2*a1;

% Условие продолжения цикла.

while (A > ep)

k = k + 1; % Инкремент числа шагов.

A = 0; % Инициализация погрешности.

for i=2:M,

for j=2:N,

% Рекуррентные формулы.

X = a1*(u(i,j-1)+u(i,j+1)+a2*u(i-1,j)+a2*u(i+1,j))+a3*f(i,j);

X = mu*X + (1-mu)*u(i,j);

% Вычисление погрешности очередного шага

R = abs(X - u(i,j));

% и выбор наибольшей.

if (R > A) A = R; end

u(i,j) = X;

end

end

% Принудительный выход из цикла по ограничению на число шагов

% с выводом соответствующей диагностики.

if k == MAX

sprintf('%d Слишком большое число шагов !!!', MAX)

break;

end

end

% Вывод результатов вычислений.

sprintf('Качество аппрокксимации %f', A)

if (k ~= MAX)

sprintf('Riched by %d steps', k)

end

mesh(x,y,u);

pause;

contour(x,y,u,50);

Соседние файлы в папке mpm_2a