Московский Государственный Институт Электронной Техники
(технический университет)
на тему:
«Приближенное решение краевых задач
математической физики методом сеток»
Выполнил: Ефремов М.В.
МП-34
Проверил: Умняшкин С.В.
Москва 2001 г.
Классификация краевой задачи.
Линейное дифференциальное уравнение второго порядка такого вида относится к уравнениям гиперболического типа. Данное уравнение описывает колебание струны в зависимости от времени. Здесь переменная у имеет физический смысл времени, поэтому в дальнейшем будет рассматриваться такая задача:
Неявная разностная схема
Для аппроксимации используем Т образный пяти-точечный шаблон:
Уравнение аппроксимируется следующей системой разностных уравнений с погрешностью аппроксимации :
А
(1)
О бозначим и запишем (1) следующим образом:
(2)
Аппроксимация первого начального условия
Аппроксимация второго начального условия
(3)
Обозначим и запишем (3) следующим образом:
(4)
Аппроксимация первого граничного условия
для j=1:
д
(5)
д
(6)
Вычисление прогоночных коэффициентов.
Прогонка осуществляется послойно, т. е. при каждом фиксированном j, начиная с j=1(при j=0 “работают” начальные условия).
Запишем системы, необходимые для решения задачи методом прогонки, с использованием аппроксимированных начальных и краевых условий.
При j=1 имеем следующую систему:
(5) (4)
Для j>=2
(6) (2)
j=j-1
При прогонке различают прямой и обратный ход:
при прямом ходе определяются коэффициенты и на j-ом слое:
при обратном ходе вычисляются значения функции :
Используя метод прогонки, получаем решение неявной разностной схемы для данной задачи.
% Формат ввода: friday13(M,N)
function friday13(M,N);
h=1/M; % Шаг по X
t=1/N; % Шаг по T
g=t/h; %
U=zeros(M+1,N+1);
%U(i,0)=0
for i=0:M
U(i+1,0+1)=0;
end;
%U(M,j)=-4y^2
for j=0:N
U(M+1,j+1)=-4*t*j*t*j;
end;
%--------первый слой------------------вычисляем прогоночные коэффициенты
c0=1+g*g; b0=g*g;
ai=g*g/2; ci=1+g*g;
bi=ai;
f0=4*t;
alf=zeros(M+1); bet=zeros(M+1);
alf(1)=b0/c0;
bet(1)=f0/c0;
for i=1:M
fi=4*t*cos(pi*h*i/2)-4*(t*i*h)^2;
alf(i+1)=bi/(ci-ai*alf(i));
bet(i+1)=(fi+ai*bet(i))/(ci-ai*alf(i));
end
%-------теперь значения функции----------
for i=M:-1:1
U(i+1-1,1+1)=alf(i)*U(i+1,1+1)+bet(i);
end;
%------прогоночные коэффициенты для j>=2--
c0=1+2*g*g; b0=2*g*g;
ai=g*g; ci=c0; bi=ai;
for j=2:N
fo=2*U(0+1,j-1+1)-U(0+1,j-2+1)+8*t*t*(t*(j-1))^2;
alf(1)=b0/c0;
bet(1)=f0/c0;
for i=1:M
fi=2*U(i+1,j-1+1)-U(i+1,j-2+1)-8*t*t*(((j-1)*t)^2-(i*h)^2);
alf(i+1)=bi/(ci-ai*alf(i));
bet(i+1)=(fi+ai*bet(i))/(ci-ai*alf(i));
end
for i=M:-1:1
U(i+1-1,j+1)=alf(i)*U(i+1,j+1)+bet(i);
end;
end
colormap(prism)
mesh(U)
grid
xlabel('Ось T')
ylabel('Ось X')
for t=1:36:360
view(t,30);
pause;
end
close
U
Список литературы
-
Долголаптев В.Г., Земсков В.Н. Численные методы решения разностных уравнений математической физики. Методические указания к курсовой работе по высшей математике. /Под ред. А.В. Ефимова. – М.: Изд. МИЭТа, 1987. – 66 с.
-
Земсков В.Н., Хахалин С.Я. Метод сеток. Методические указания к выполнению курсовой работы на персональном компьютере. – М.: МИЭТ, 1998. – 64 с.: ил.