Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция№12.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
737.79 Кб
Скачать

Листинг_№9

%Программа численного решения задачи (62),

%(68), (72) попеременно-треугольным способом

function triangle

global a b k1 k2

%Определяем габариты области интегрирования и

%константы k1, k2, входящие в уравнение (62)

a=1; b=1; k1=1; k2=1;

%Определяем число узлов сетки и шаги h1, h2

%по переменным x1, x2

N=35; M=35;

h1=a/(N-1); h2=b/(M-1);

x1=0:h1:a; x2=0:h2:b;

%Определяем шаг в итерационной схеме на

%установление и число шагов на установление

tau=0.001; Nt=30;

r1=(tau*k1)/h1^2; r2=(tau*k2)/h2^2;

r3=1+r1+r2;

%Определяем начальное распределение

for n=1:N

for m=1:M

y(1,n,m)=0.1*randn;

end

end

%Определяем нижнее и верхнее граничные условия

for t=1:Nt

for n=1:N

y(t,n,1)=u(x1(n),x2(1));

y(t,n,M)=u(x1(n),x2(M));

end

end

%Определяем левое и правое граничные условия

for t=1:Nt

for m=1:M

y(t,1,m)=u(x1(1),x2(m));

y(t,N,m)=u(x1(N),x2(m));

end

end

%Оцениваем ошибку отличия численного решения от

%аналитического в норме C

for n=1:N

for m=1:M

z(n,m)=abs(y(1,n,m)-u(x1(n),x2(m)));

end

end

error(1)=max(max(z));

%Организуем основной цикл итераций на установление

for t=2:Nt

w=zeros(N,M);

%Находим промежуточное решение w согласно (71)

for m=2:(M-1)

for n=2:(N-1)

w(n,m)=(r1*w(n-1,m)+r2*w(n,m-1)+...

(k1/h1^2)*(y(t-1,n-1,m)-...

2*y(t-1,n,m)+y(t-1,n+1,m))+...

(k2/h2^2)*(y(t-1,n,m-1)-...

2*y(t-1,n,m)+y(t-1,n,m+1))+...

f(x1(n),x2(m)))/r3;

end

end

%Находим решение на следующем слое согласно (71')

for m=(M-1):-1:2

for n=(N-1):-1:2

y(t,n,m)=(r1*y(t,n+1,m)+r2*y(t,n,m+1)+...

y(t-1,n,m)+r1*(y(t-1,n,m)-...

y(t-1,n+1,m))+r2*(y(t-1,n,m)-...

y(t-1,n,m+1))+tau*w(n,m))/r3;

end

end

%Оцениваем ошибку отличия численного решения от

%аналитического в норме C

for n=1:N

for m=1:M

z(n,m)=abs(y(t,n,m)-u(x1(n),x2(m)));

end

end

error(t)=max(max(z));

end

for n=1:N

for m=1:M

z(n,m)=y(Nt,n,m);

end

end

%Рисуем профиль численного решения на последнем шаге

%итерации

subplot(1,2,1); surf(x2,x1,z);

%Рисуем профиль ошибки численного решения от номера

%шага итерации

subplot(1,2,2): plot(1:Nt,error);

%Определяем функцию правой части (68)

function y=f(x1,x2)

global a b k1 k2

y=-2*k2*(x1-0.5*a)^2-2*k1*(x2-0.5*b)^2;

%Определяем аналитическое решение (69)

function y=u(x1,x2)

global a b

y=(x1-0.5*a)^2*(x2-0.5*b)^2;

На рис.10 приведен итог работы кода программы листинга_№9. На левом рисунке приведен трехмерный профиль численного решения по схеме (71), (71) задачи Дирихле (62), (68), (72) попеременно-треугольным способом. Трехмерный профиль приведен для численного решения полученного на последнем шаге итерационного процесса, это решение весьма близко к аналитическому решению (69) исходной задачи. На правом рисунке приведена зависимость ошибки численного решения от номера шага итерационного процесса, т.е. error = , где t = 1,…, tmax — номер итерации.

Рис.10. Решение задачи Дирихле (62), (68), (72) попеременно- треугольным способом

 См., например: Тихонов А.Н., Самарский А.Н. Уравнения математической физики. — М.: Наука, Глав. ред. физ.-мат. литературы, 1972.

1 Калиткин Н.Н. Численные методы. — М.: Наука, Глав. ред. физ.-мат. литературы, 1978.

2 Более подробно о многочленах Чебышева в книге: Калиткин Н.Н. Численные методы. — М.: Наука, Глав. ред. физ.-мат. литературы, 1978 (Приложение, с.501).

3 Самарский А.А., Гулин А.В. Численные методы. — М.: Наука, Глав. ред. физ.-мат. литературы, 1989, с.317.

34

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]