- •Московский Государственный Институт Электронной Техники
- •Решение задачи с помощью явной разностной схемы
- •2.1 Аппроксимация дифференциального уравнения
- •2.2 Аппроксимация 1-го начального условия
- •2.3 Аппроксимация 1-го граничного условия
- •2.5Аппроксимация 2-го граничного условия
- •Решение задачи с помощью неявной разностной схемы
- •3.1 Аппроксимация дифференциального уравнения
- •3.2 Аппроксимация 1-го начального условия
- •3.3 Аппроксимация 1-го граничного условия
- •3.5Аппроксимация 2-го граничного условия
- •3.6Вычисления прогоночных коэффициентов
- •Приложение
- •Список использованной литературы :
2.5Аппроксимация 2-го граничного условия
![]()
![]()
Порядок аппроксимации
данной разностной схемы
Устойчивость решения.
Для уравнений гиперболического типа метод спектральных гармоник
приводит к следующему условию устойчивости:
(7),
т.е. если это условие устойчивости не будет выполнено, то в процессе рекуррентного решения возможно накапливание ошибок от слоя к слою.
Отсюда, в частности,
получаем для явной схемы (
)
условие устойчивости Куранта-Леви:
.
Итак U(i,j ) при j=0 и j=1 определены. Включается рекуррентная процедура описываемая уравнением (1) и вычисляется U(i,j ) для всех i=1,2,...,m-1 , для каждого фиксированного j=2,...,n-1. Текст программы в среде Matlab приведен в приложении (стр.7). Поверхность функции являющейся решением нашего дифференциального уравнения изображена в приложении (стр. 9).
Решение задачи с помощью неявной разностной схемы
Рассмотрим снова нашу краевую задачу . Для аппроксимации уравнения используем Т-образный пятиточечный шаблон . Уравнение аппроксимируется следующими уравнениями :
3.1 Аппроксимация дифференциального уравнения
![]()
Обозначим g=t/h и запишем (1) к виду удобному для применения метода прогонки:

3.2 Аппроксимация 1-го начального условия
![]()
3.3 Аппроксимация 1-го граничного условия
![]()
Аппроксимация 2-го начального условия
Для более точного аппроксимирования 2-го начального условия разложим U(x,t) в окрестности точки (x,0) по формуле Тейлора и используя 1-ое и
2-ое начальное условия перейдем к конечным разностям:
![]()
Эта формула отличается от аналогичной для явной схемы тем ,что аппроксимация разностной производной второго порядка по x производится на первом слое ,а не на нулевом . Запишем (5) к виду удобному для применения метода прогонки:

![]()
3.5Аппроксимация 2-го граничного условия
![]()
3.6Вычисления прогоночных коэффициентов
Сначала найдем U(i,j) на слое j=1. Определим прогоночные коэффициенты. Учитывая 1-ое граничное условие и уравнение (6) получаем:

Теперь вычислим граничные прогоночные коэффициенты:
![]()
![]()
Методом прогонки находим U(i,1) где i=1...m ;
Теперь зная значения j=0,1 находим U(i,j ) где j=2...n.
Используя уравнение (2) находим прогоночные коэффициенты:

Теперь вычислим граничные прогоночные коэффициенты:
![]()
Методом прогонки находим U(i,j) где i=1...m ,j=2..n ;
Текст программы в среде Matlab приведен в приложении (стр. 7-8). Поверхность функции являющейся решением нашего дифференциального уравнения изображена в приложении (стр. 11).
Приложение
Программа для численного решения задачи на ПК в среде MATLAB.
% YAV
% Решение краевой задачи с применением ЯВНОЙ разностной схемы.
t=input('Введите шаг по оси времени:');
while ((t<0.012) | (t>0.5))
t=input('Введите шаг по оси времени [0.012;0.5]:');,end;
h=input('Введите шаг по оси стержня:');
while ((h<0.012) | (h>0.5))
h=input('Введите шаг по оси стержня [0.012;0.5]:');,end;
M=floor(1/h);,N=floor(1/t);,h=1/M;,t=1/N;
if t>h,clc,for i=1:10,disp(' ');,end;
disp(' ВОЗМОЖНА НЕУСТОЙЧИВОСТЬ!!!');
disp(' (не выполнено условие устойчивости Куранта-Леви:t<=h)!!!');
pause,end;,g=(t/h)^2;
U=zeros(M+1,N+1);
for j=0:N,U(M+1,j+1)=j*t;,end;
for i=1:(M-1),U(i+1,2)=t+5*t^2/(1+(i*h)^2);,end;
U(1,2)=(t+5*t^2+g*U(2,2))/(1+g*(1+h));
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/(1+(i*h)^2+(j*t)^2);
end;
f=2*U(1,j+1)-U(1,j)+t^2*10/(1+((j+1)*t)^2);
U(1,j+2)=(f+2*g*U(2,j+2))/(1+2*g*(1+h));
end;
mesh(U);,clc
% NEYAV
% Решение краевой задачи с применением НЕЯВНОЙ разностной схемы
%------------- определение числа разбиений по осям x, t ---------------
M=50; N=50;
%--- определение шагов сетки по оси 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=C;B1=C;
%------------ этап заполнения матрицы 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)=t+5*t2/(1+h2*i^2);
end;
%------------2) Определение граничных прогоночных коэффициентов---------
A(M)=0; B(1)=1; C(1)=1+h; C(M+1)=1;
F(1)=0; F(M+1)=t;
%------------ определение U(i,1) методом прогонки ---------------
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,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)=1; C(1)=1+h; 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)=0;
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;
F(M+1)=j*t;
B1(1)=F(1)/C(1);
for i=2:M,
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,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;
u1=u(i,j+1);
plot(i,u1),pause;
end; mesh(u);pause;clc
Результаты решения.
Пример решения по
явной схеме при h=0.02
:
Пример решения по
неявной схеме при h=0.02
:
