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

2.5 Аппроксимация 2-го граничного условия.

Разложим U(x,y) в окрестности точки (0,y) по формуле Тейлора:

Выразим из этого уравнения и подставим в него значение:

(8)

где

Теперь возьмем j = 0 и с учетом получим (4):

(8*)

Чтобы найти подставим в конечно-разностную систему(3*) значения i = 0 и j = 0.Опять же учтем равенство (4):

(8**)

ищется из аппроксимации 2-ого начального условия (5*), путем подстановки в него i =0:

Воспользуемся условием (4) и учтем, что . Тогда в итоге получим:

Подставим этот результат в выражение (8**):

Подставляя в выражение (8*) получаем:

или

Таким образом, теперь у нас есть все необходимые данные, чтобы воспользоваться выражением (8) при j = 1,..,N

Порядок аппроксимации данной разностной схемы

Устойчивость решения.

Для уравнений гиперболического типа метод спектральных гармоник приводит к следующему условию устойчивости:

(9)

т.е. если это условие устойчивости не будет выполнено, то в процессе рекуррентного решения возможно накапливание ошибок от слоя к слою.

Отсюда, в частности, получаем для явной схемы () условие устойчивости Куранта-Леви:. Итак, у наспри j =0 и j =1 определены. Теперь включается рекуррентная процедура описываемая уравнением (3) и вычисляется для всехi=1,2,...,M-1, для каждого фиксированного j=2,...,N-1. Текст программы в среде Matlab приведен в “Приложении”. Графики функции, являющейся решением нашего дифференциального уравнения изображены в “Приложении”.

function yav(M,N)

h=1/M;

h2=h^2;

t=1/N;

t2=t^2;

g2=t2/h2;

U=zeros(M+1,N+1);

for j=0:N

U(M+1,j+1)=j*t;

end;

for i=0:M-1

U(i+1,2)=t+5*t2/(1+h2*i^2);

end;

for j=1:(N-1),

for i=1:(M-1),

U(i+1,j+2)=2*(1-g2)*U(i+1,j+1)+g2*(U(i,j+1)+U(i+2,j+1))-U(i+1,j)+t2*10/(1+h2*(i^2)+t2*(j^2));

end;

U(1,j+2)=2*g2*U(2,j+1)+2*U(1,j+1)*(1-g2)-U(1,j)+10*t2/(1+(j*t)^2);

end;

contour(U,11);pause;

y=zeros(M+1,N+1);

for i=1:M+1,

for j=0:N-1,

y(i,j+1)=U(i,1+j);

end;

end;

i=1:1:M+1;

plot(i,y);

pause;

mesh(U);clc;

for i=0:M,

for j=0:N,

b(i+1,j+1)=U(1+i,1+j);

end;

end;

b

NEYAV.M

% Решение краевой задачи с применением НЕЯВНОЙ разностной схемы

function neyav(M,N)

h=1/M;

t=1/N;

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

h2=h^2;

t2=t^2;

g2=t2/h2;

for i=0:M,

u(i+1,1)=0;

end

A=zeros(M,1);

C=zeros(M+1,1);

B=A;A1=A;F=C;B1=C;

%------------ЭТАП ЗАПОЛНЕНИЯ МАТРИЦЫ U(x,y) 2-ым НАЧАЛЬНЫМ УСЛОВИЕМ----

%------------1) Определение прогоночных коэффициентов-------------------

for i=1:M-1, A(i)=g2/2; B(i+1)=g2/2; C(i+1)=1+g2;

F(i+1)=t+5*t2/(1+h2*i^2);

end;

%------------2) Определение граничных прогоночных коэффициентов---------

A(M)=0; B(1)=g2; C(1)=1+h*g2+g2; C(M+1)=1;

F(1)=t+5*t2; F(M+1)=t;

%------------ ОПРЕДЕЛЕНИЕ U(i,2) МЕТОДОМ ПРОГОНКИ---------------

A1(1)=B(1)/C(1); B1(1)=F(1)/C(1);

for i=2:M

A1(i)=B(i)/(C(i)-A(i-1)*A1(i-1));

B1(i)=(F(i)+A(i-1)*B1(i-1))/(C(i)-A(i-1)*A1(i-1));

end;

B1(M+1)=(F(M+1)+A(M)*B1(M))/(C(M+1)-A(M)*A1(M));

u(M+1,2)=B1(M+1);

for i=M:-1:1,

u(i,2)=A1(i)*u(i+1,2)+B1(i);

end;

%------------ЭТАП ЗАПОЛНЕНИЯ МАТРИЦЫ U(x,y) ---------------------------

%------------1) Определение прогоночных коэффициентов-------------------

for i=1:M-1, A(i)=g2; B(i+1)=g2; C(i+1)=1+2*g2; end

%------------2) Определение граничных прогоночных коэффициентов---------

A(M)=0; B(1)=2*g2; C(1)=1+2*h*g2+2*g2; F(1)=t2*(t+5*t2);

C(M+1)=1;

%------------ ОПРЕДЕЛЕНИЕ U(i,j) МЕТОДОМ ПРОГОНКИ---------------

A1(1)=B(1)/C(1); B1(1)=F(1)/C(1);

for j=2:N+1,

for i=1:M-1,

F(i+1)=2*u(i+1,j)-u(i+1,j-1)+10*t2/(1+h2*i^2+t2*j^2);

end;

for i=2:M,

A1(i)=B(i)/(C(i)-A(i-1)*A1(i-1));

B1(i)=(F(i)+A(i-1)*B1(i-1))/(C(i)-A(i-1)*A1(i-1));

end;

F(M+1)=j*t;

B1(M+1)=(F(M+1)+A(M)*B1(M))/(C(M+1)-A(M)*A1(M));

u(M+1,j+1)=B1(M+1);

for i=M:-1:1,

u(i,j+1)=A1(i)*u(i+1,j+1)+B1(i);

end;

end;

contour(u,15);pause;

for j=0:N,

i=1:1:M+1;

u1=u(i,j+1)

plot(i,u1),pause;

hold on

end;hold off

mesh(u);

Результаты программы при шаге 0.1:

Значения U(x,y)

Столбцы с 0-го по 5-ый:

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