- •2. Разностная схема для решения уравнения гиперболического типа.
- •2.1. Построение разностной схемы.
- •2.2. Реализация начальных и граничных условий.
- •1.3. Особенности построения разностной схемы для уравнения, записанного в цилиндрической системе координат.
- •1.4. Пример решения гиперболического уравнения методом конечных разностей.
- •1.4.1. Программа на языке Паскаль.
- •1.4.2. Программа для системы Mathcad.
- •1.5. Варианты заданий.
1.3. Особенности построения разностной схемы для уравнения, записанного в цилиндрической системе координат.
Рассмотрим следующее гиперболическое уравнение, записанное в цилиндрической системе координат:
(2.15)
При построении разностной схемы будем использовать следующий шаблон (рис.6):
Рис.6.
Производная
по времени записывается также как и
п.2.1, а производная по пространству:
.
Здесь
.
Тогда разностная схема для уравнения (2.15) будет иметь вид:
,
На первом шаге по времени: (k=0)
Граничные
условия реализуются по аналогии с п.2.2,
за исключением того случая, когда левая
граница есть центр симметрии, т.е.
.
На такой границе должно быть задано
условие симметрии:
.
Для нахождения решения на верхнем
временном слое в узле i
= 0, уравнение (1.11) нельзя применять, как
это делалось в п.1.2 с уравнением (1.2),
поскольку в данном случае существует
особенность при
.
Для
устранения этой особенности перепишем
уравнение (1.10) в виде
.
Устремляя
к нулю и раскрывая по Лопиталю
неопределенность
,
получим следующее уравнение в точке
:
(2.16)
Записывая разностную
схему для (2.16) и для граничного условия
,
получим следующее уравнения для
нахождения функции на верхнем временном
слое в узле i
= 0:
,
(2.17)
,
Условие
устойчивости
Для краевых условий 2-го рода:
,
k
> 0
,
k
= 0
1.4. Пример решения гиперболического уравнения методом конечных разностей.
Решить краевую задачу
НУ:
;
.
ГУ:
;
.
Вывести
график функции
в точке
.
Для решения данной задачи используем разностную схему (2.3), (2.6) и (2.8).
Ниже приведены примеры программ для численного решения поставленной задачи, реализованной для системы Mathcad, и написанной на языке Паскаль.
1.4.1. Программа на языке Паскаль.
Program Vibration;
uses crt,gra1;
Const
time_end=6.0;
{Задание числа отрезков разбиения области решения}
N=200;
{Расчет шага интегрирования по пространству}
h=1/N;
{Задание числа Куранта}
C=1.0;
{Расчет шага по времени из условия устойчивости}
tau=C*h;
Var
i,nt:integer;
U1,U,U0,X:array [0..N] of real;
time:real;
FirstStep:Boolean;
Begin
{Расчет координат узлов по пространству разностной сетки}
for i:=0 to N do X[i]:=h*i;
{Задание начального смещения}
for i:=0 to N do U[i]:=sin(Pi*X[i]);
time:=0; nt:=1;
{Построение координатных осей}
CoordOs(0,time_end,10,-1,1,10,'Time','U');
{Установление графического курсора в начальную точку}
FirstRis; Ris(time,U[N div 2],13);
FirstStep:=true;
while time<=time_end do begin
{Вычисление смещения в граничных точках на верхнем временном слое}
U1[0]:=0.0;
If FirstStep Then
U1[N]:=C*C*U[N-1]+(1.0-C*C)*U[N]
Else
U1[N]:=-U0[N]+2*C*C*U[N-1]+2*(1.0-C*C)*U[N];
{Вычисление смещений во внутренних точках на верхнем временном слое}
for i:=1 to N-1 do
If FirstStep Then
U1[i]:=0.5*C*C*U[i-1]+(1.0-C*C)*U[i]+0.5*C*C*U[i+1]
Else
U1[i]:=-U0[i]+C*C*U[i-1]+2*(1.0-C*C)*U[i]+C*C*U[i+1];
{Присвоение переменным U, хранящим значения функции
на старом временном слое, значений функции на новом временном слое}
for i:=0 to N do begin U0[i]:=U[i];U[i]:=U1[i] end;
time:=time+tau;
{Графический вывод смещений в середине струны}
Ris(time,U[N div 2],13);
FirstStep:=false;
end;
repeat
until keypressed;
end.
Результат решения приведен на рис.7.
Рис.7.
