Московский Государственный Институт Электронной Техники
( Технический Университет )
Курсовая работа по теме :
Численные методы решения разностных уравнений математической физики
Вариант №11.
Выполнил: Ивченко В.Н.
Группа: МП-34
Руководитель: Соколова Т.В.
МОСКВА 2000 г.
Постановка задачи.
Задание: получить приблизительное решение данной краевой задачи уравнения в частных производных математической
физики методом сеток.
Данное уравнение является уравнением гиперболического типа и физически отражает процесс колебания струны. Искомое решение U(x,y) - вертикальное отклонение струны в точке x в момент времени t.
Данная краевая задача состоит в нахождении функции U(x,y), удовлетворяющей уравнению, а также заданным начальным и граничным условиям.
Граничное условие рода определяет закон движения правого конца струны так называемое условие «упругого закрепления».Для левого конца в качестве граничного условия задано условие
Начальные условия и задают начальную форму струны и распределение скоростей в начальный момент времени.
РЕШЕНИЕ ЗАДАЧИ С ПОМОЩЬЮ ЯВНОЙ РАЗНОСТНОЙ СХЕМЫ
В явной разностной схеме значение сеточной функции на последующем слое полностью определяется значением её на предыдущем слое по рекуррентным формулам. В данной задаче аппроксимацию дифференциальных операторов проведём по следующим шаблонам
2.1 Аппроксимация дифференциального уравнения
Для сведения задачи к явной разностной схеме используем шаблон " крест".
Получаем конечно-разностную систему :
Обозначим и выразим через остальные значения сеточной функции,
входящие в уравнение:
i = 1,.....,m-1;
j = 1,.....,n-1.
Уравнение (1) должно выполняться для всех внутренних узлов сетки . Для того чтобы система стала полностью определенной , необходимо дополнить ее уравнениями получаемыми из аппроксимации краевых и начальных условий.
2.2 Аппроксимация 1-го начального условия.
(2)
2.3 Аппроксимация 1-го граничного условия.
Аппроксимация краевого условия второго рода используется только для нахождения решения на границе i=0 в явном виде:
(3)
2.4 Аппроксимация 2-го начального условия.
Для более точного аппроксимирования 2-го начального условия разложим в окрестности точки по формуле Тейлора и используя начальные условия перейдем к конечным разностям:
(4)
Формула (4) используется на начальном этапе для вычисления значения функции U на первом слое, по известным значениям функции на нулевом слое и на границе .
-
Аппроксимация 2-го граничного условия.
Для более точного аппроксимирования 2-го граничного условия разложим в окрестности точки (1,y ) по формуле Тейлора:
Используя уравнение краевой задачи и второе граничное условие получаем:
Перейдя к конечным разностям, записываемыми в узле , получаем:
(5)
Выражая из него получаем:
(6)
Найдем необходимую точку. Из (4) , при
Откуда -
(7)
Из (5) , при :
Откуда -
(8)
Из (1) , при
(9)
Итак при и определены. Включается рекуррентная процедура.
Порядок аппроксимации данной разностной схемы .
Устойчивость решения.
Для уравнений гиперболического типа метод спектральных гармоник
приводит к следующему условию устойчивости:
(7),
т.е. если это условие устойчивости не будет выполнено, то в процессе рекуррентного решения возможно накапливание ошибок от слоя к слою.
Отсюда, в частности, получаем для явной схемы () условие устойчивости Куранта-Леви: .
РЕШЕНИЕ ЗАДАЧИ С ПОМОЩЬЮ НЕЯВНОЙ РАЗНОСТНОЙ СХЕМЫ.
Рассмотрим снова краевую задачу . Для аппроксимации уравнения используем Т-образный пятиточечный шаблон . Уравнение аппроксимируется следующими уравнениями :
3.1 Аппроксимация дифференциального уравнения
Обозначим и запишем (1) к виду удобному для применения метода прогонки:
3.2 Аппроксимация 1-го начального условия
(3)
3.3 Аппроксимация 1-го граничного условия
(4)
3.4 Аппроксимация 2-го начального условия
Для более точного аппроксимирования 2-го начального условия разложим в окрестности точки по формуле Тейлора и используя 1-ое и 2-ое начальное условия перейдем к конечным разностям:
(5)
Эта формула отличается от аналогичной для явной схемы тем, что аппроксимация разностной производной второго порядка по производится на первом слое, а не на нулевом. Запишем (5) к виду удобному для применения метода прогонки:
(6)
-
Аппроксимация 2-го граничного условия.
При
(7)
При
3.6 Вычисления прогоночных коэффициентов
Сначала найдем на слое . Определим прогоночные коэффициенты.
Учитывая 1-ое граничное условие и уравнение (6) получаем:
ai = bi =
Ci = 1 +
fi =
b0 = 0, C0 = 1, f0 =
Теперь вычислим граничные прогоночные коэффициенты
aM =0, CM = 1, fM = .
Методом прогонки находим где ;
Теперь зная значения находим где
Используя уравнение (2) находим прогоночные коэффициенты:
ai = bi =
Ci = 1 +
fi = 2Ui,j - Ui,j-1
b0 = 0, C0 = 1, f0 = .
Теперь вычислим граничные прогоночные коэффициенты
aM =0, CM = 1,
fM =.
Методом прогонки находим где;
Тексты программ.
Явная схема.
clear
%----------------Число разбиений по осям-------------
M=50; N=55;
%------------------Вычисление шага сетки-------------
h=1/M; t=1/N;
%--------------------Константы-----------------------
u=zeros(M+1,N+1);
g=t/h;
g2=g^2;
t2=t^2;
h2=h^2;
%------------первое граничное условие
for j=0:N,
u(1,j+1)=20*(j*j*t*t+cos(3*pi*j*t/2));
end
%------------первое начальное условие
for i=1:M-1,
u(i+1,1)=20*((i^2)*h2)+20*(sin(3*pi*i*h/2)+cos(3*pi*i*h/2));
end
%%------------заполнение матрицы
for i=1:M-1,
u(i+1,2)=(1-g2)*u(i+1,1)+g2/2*(u(i,1)+u(i+2,1));
end
u(M+1,2)=u(M+1,1)+g2*(u(M,1)-u(M+1,1)+h*(40+30*pi));
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);
end
u(M+1,j+2) =2*(1-g2)*u(M+1,j+1)-u(M+1,j)+2*g2*u(M,j+1)+2*g2*h*(40+30*pi*cos(3*pi*t*j/2));
end;
%-------------------построение графиков-----------
contour(u,40);pause;
mesh(u);pause;
for t=1:60:360
mesh(u,[t,50]);
pause;
end
Неявная схема.
%------ определение числа разбиений по осям x, t -----
M=50; N=60;
%--- определение шагов сетки по оси 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)=20*h2*i^2+20*(sin(3*pi*i*h/2)+cos(3*pi*i*h/2));
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)=u(1+i,1);
end;
%-----2) Определение граничных прогоночных коэффициентов----
A(M)=0; B(1)=0; C(1)=1; C(M+1)=1;
F(1)=20*(t^2+cos(3*pi*t/2));
F(M+1)=u(M+1,1)+g2*(u(M,1)-u(M+1,1)+h*(40+30*pi));
%------------ определение 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)=0; C(1)=1; 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)=20*((j*j*t*t)+cos(3*pi*j*t/2));
for i=1:M-1,
F(i+1)=2*u(i+1,j)-u(i+1,j-1); end;
F(M+1)=2*g2*(u(M,j)-u(M+1,j)+40*h+30*pi*h*cos(3*pi/2*t*(j-1)))-u(M+1,j-1)+2*u(M+1,j);
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,40);
pause;
mesh(u);
pause;
for t=1:60:360
mesh(u,[t,0]);
pause;
end;
Результаты работы.
Явная схема.
Неявная схема
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ :
1. В.Г. Долголаптев, В.Н. Земсков. Численные методы решения разностных
уравнений математической физики. Методические указания к курсовой работе
по высшей математике., МИЭТ 1987.
2. В.Н. Земсков, С.Я. Хахалин. Метод сеток. Методические указания к выоплнению курсовой работы на персональном компьютере., МИЕТ 1998.