Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ (МП-3) / Курсовые / mpm_9a / Задание.doc
Скачиваний:
138
Добавлен:
17.04.2013
Размер:
518.14 Кб
Скачать

Решение задачи с помощью неявной разностной схемы

Рассмотрим снова нашу краевую задачу. Для аппроксимации уравнения используем Т-образный пятиточечный шаблон. Описание аппроксимации дифференциальных операторов с помощью этого шаблона приведено в разделе“Теоретически сведения”. Уравнение аппроксимируется следующими уравнениями:

3.1 Аппроксимация дифференциального уравнения

(10)

Обозначим и приведем (10) к виду удобному для применения метода прогонки:

(11)

3.2 Аппроксимация 1-го начального условия

(14)

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

Второе начальное условие аппроксимируем с порядком аналогично тому, как это делалось для явной схемы. Т.е. для более точного его аппроксимирования разложим U(x,y) в окрестности точки (x,0) по формуле Тейлора, затем используем исходное уравнение и начальное условие и перейдем к конечным разностям:

(15)

Эта формула отличается от аналогичной формулы для явной схемы тем, что аппроксимируется разностной производной второго порядка на первом слое, а не на нулевом. Запишем выражение (15) используя :

(16)

3.4 Аппроксимация 1-ого граничного условия

(17)

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

Для получения погрешности аппроксимации порядка О(h2), аппроксимируем 2-ое граничное условие в узле (i,1) (метод фиктивного узла i = -1, j = 1).

(18*)

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

Подставляем полученный результат в (18*):

(18)

Полученное уравнение для слоя j =1 рассматривается как 1-ая строка трехдиагональной системы уравнений, которая решается методом прогонки.

Для :

Предполагая достаточную гладкость искомого решения, аппроксимируем волновое уравнение в узле (0,j):

Подставляя значения в фиктивном узле:

(19)

А данное уравнение рассматривается как 1-ая строка трехдиагональной системы уравнений, решаемой прогонкой по слоям, начиная j =2.

Таким образом, построена неявная разностная схема аппроксимирующая краевую задачу с погрешностью аппроксимации порядка .В левую часть уравнений (11)-(19) входят в качестве неизвестных три значения сеточной функции в трех соседних узлах j+1-ого слоя, поэтому такая разностная схема называется неявной. Полученная система линейных алгебраических уравнений описывается трехдиагональной матрицей. Для решения таких систем применяется метод подгонки.

3.6 Вычисления прогоночных коэффициентов

Сначала найдем на слоеj =1. Определим прогоночные коэффициенты.

Учитывая уравнения (16) и (18):

(20)

Теперь вычислим граничные прогоночные коэффициенты

Из выражения (17) получаем:

Методом прогонки находим где i =1,..,m;

Теперь зная значения j = 0,1, находим где j =2,.,N.(используем уравнение (11)):

(21)

из (19):

Приложение

Явная схема.

Неявная схема.

Изолинии. Явная схема.

Неявная схема.

Явная схема

Неявная схема.

Сравнение явной и неявной схем.

Матрица неявной схемы:

0 0.0501 0.2011 0.4545 0.8129 1.2801 1.8609 2.5617 3.3900 4.3690 5.8171

0 0.0504 0.2019 0.4564 0.8165 1.2860 1.8698 2.5742 3.4120 4.5433 6.2400

0 0.0507 0.2036 0.4608 0.8253 1.3009 1.8927 2.6109 3.6096 5.1730 6.9383

0 0.0511 0.2055 0.4662 0.8367 1.3213 1.9277 2.8030 4.2560 5.8955 7.5719

0 0.0516 0.2074 0.4718 0.8492 1.3460 2.1010 3.4510 4.9732 6.5253 8.1056

0 0.0520 0.2094 0.4775 0.8629 1.4950 2.7439 4.1510 5.5837 7.0398 8.5189

0 0.0525 0.2114 0.4837 0.9880 2.1340 3.4233 4.7356 6.0684 7.4204 8.7910

0 0.0530 0.2136 0.5871 1.6293 2.7959 3.9829 5.1884 6.4105 7.6478 8.8996

0 0.0535 0.2955 1.2374 2.2791 3.3366 4.4088 5.4945 6.5926 7.7018 8.8214

0 0.1104 0.9615 1.8798 2.8070 3.7427 4.6865 5.6378 6.5960 7.5605 8.5309

0 0.8000 1.6000 2.4000 3.2000 4.0000 4.8000 5.6000 6.4000 7.2000 8.0000

матрица явной схемы:

0 0.0500 0.2007 0.4534 0.8108 1.2765 1.8553 2.5534 3.3782 4.3388 5.4837

0 0.0502 0.2014 0.4552 0.8143 1.2822 1.8639 2.5656 3.3947 4.3788 6.2241

0 0.0503 0.2027 0.4592 0.8226 1.2966 1.8862 2.5980 3.4570 5.1683 6.9376

0 0.0505 0.2041 0.4638 0.8331 1.3160 1.9178 2.6619 4.2527 5.8974 7.5736

0 0.0507 0.2054 0.4686 0.8445 1.3382 1.9711 3.4513 4.9757 6.5281 8.1075

0 0.0508 0.2068 0.4734 0.8562 1.3765 2.7453 4.1525 5.5868 7.0430 8.5219

0 0.0510 0.2082 0.4783 0.8821 2.1325 3.4240 4.7379 6.0709 7.4236 8.7940

0 0.0512 0.2097 0.4959 1.6296 2.7955 3.9836 5.1901 6.4130 7.6507 8.9025

0 0.0514 0.2222 1.2372 2.2790 3.3364 4.4092 5.4956 6.5943 7.7040 8.8235

0 0.0603 0.9612 1.8796 2.8070 3.7427 4.6868 5.6384 6.5968 7.5616 8.5321

0 0.8000 1.6000 2.4000 3.2000 4.0000 4.8000 5.6000 6.4000 7.2000 8.0000

матрица ошибок

0 -0.0001 -0.0004 -0.0011 -0.0021 -0.0036 -0.0056 -0.0083 -0.0118 -0.0302 -0.3335

0 -0.0002 -0.0005 -0.0012 -0.0023 -0.0038 -0.0058 -0.0086 -0.0173 -0.1645 -0.0159

0 -0.0004 -0.0009 -0.0016 -0.0027 -0.0043 -0.0065 -0.0129 -0.1525 -0.0046 -0.0007

0 -0.0006 -0.0014 -0.0023 -0.0035 -0.0053 -0.0099 -0.1411 -0.0032 0.0019 0.0017

0 -0.0009 -0.0019 -0.0032 -0.0047 -0.0079 -0.1299 0.0003 0.0025 0.0028 0.0019

0 -0.0012 -0.0025 -0.0042 -0.0066 -0.1185 0.0014 0.0014 0.0031 0.0032 0.0029

0 -0.0015 -0.0032 -0.0054 -0.1059 -0.0015 0.0007 0.0023 0.0024 0.0033 0.0030

0 -0.0018 -0.0039 -0.0912 0.0003 -0.0004 0.0007 0.0017 0.0025 0.0029 0.0029

0 -0.0022 -0.0734 -0.0003 -0.0001 -0.0001 0.000 0.0010 0.0017 0.0022 0.00214

0 -0.0500 -0.0003 -0.0002 -0.0000 -0.0000 0.0003 0.0006 0.0008 0.0011 0.0012

0 0 0 -0.0000 0 0 -0.0000 -0.0000 0 0 0

% YAV

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

% Вариант задания №9 .

% МГИЭТ, 2000г.

M=300; N=450;

h=1/M;

t=1/N;

g=(t/h)^2;

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

for j=0:N

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

end;

for i=0:M-1

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

end;

for j=1:(N-1),

for i=1:(M-1),

U(i+1,j+2)=2*(1-g)*U(i+1,j+1)+g*(U(i,j+1)+U(i+2,j+1))- U(i+1,j)+t^2*10*exp(i*h*j*t);

end;

U(1,j+2)=2*g*U(2,j+1)+2*U(1,j+1)*(1-g)-U(1,j)+10*t^2;

end;

contour(U,11);pause;

y=zeros(M+1,6);

for i=1:M+1,

for j=0:5,

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

end;

end;

i=1:1:M+1;

plot(i,y);

pause;

mesh(U);clc;

for i=0:10,

for j=0:10,

b(i+1,j+1)=U(1+i*30,1+j*45);

end;

end;

b

% NEYAV

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

% Вариант задания №9

% МГИЭТ,2000г.

%------------- ОПРЕДЕЛЕНИЕ ЧИСЛА РАЗБИЕНИЙ ПО ОСЯМ x,t---------------

M=300; N=300;

%---ОПРЕДЕЛЕНИЕ ШАГОВ СЕТКИ:a=b/c,ГДЕ b-ПРЕДЕЛ ВЫЧИСЛЕНИЙ ПО ОСИ x ИЛИ t

h=1/M; t=1/N;

%--------------ОПРЕДЕЛЕНИЕ РАБОЧИХ КОНСТАНТ ---------------------------

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

h2=h^2; t2=t^2; g2=t2/h2;

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

for i=0:M, u(i+1,1)=0; end

%-----------------------------------------------------------------------

A=zeros(M,1);C=zeros(M+1,1);B=A;A1=A;F=zeros(M+1,N+1);B1=F;

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

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

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

F(i+1,2)=5*t2*exp(h*i); end;

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

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

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

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

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

for i=2:M

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

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

end;

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

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

for i=M:-1:1,

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

end;

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

%------------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*g2; C(M+1)=1;

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

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

for i=2:M,

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

end;

for j=2:N,

F(1,j+1)=2*u(1,j)-u(1,j-1)+10*t2;

B1(1,j+1)=F(1,j+1)/C(1);

for i=1:M-1,

F(i+1,j+1)=2*u(i+1,j)-u(i+1,j-1)+10*t2*exp(h*i*t*j);

end;

F(M+1,j+1)=8*j*t;

for i=2:M,

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

end;

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

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

for i=M:-1:1,

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

end;

end;

contour(u,11);pause;

y=zeros(M+1,6);

for i=1:M+1,

for j=0:5,

y(i,j+1)=u(i,1+j*60);

end;

end;

i=1:1:M+1; plot(i,y),pause;

for i=0:10,

for j=0:10,

a(i+1,j+1)=u(1+i*30,1+j*30);

end;

end;

mesh(u);pause;clc;

a

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