Решение смешанной задачи для уравнения гиперболического типа методом сеток
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
Р.Ф.
КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра прикладной и высшей математики
Лабораторная работа № 43
на тему:
Решение смешанной задачи для
уравнения
гиперболического типа методом сеток
Группа М-2136
Выполнил студент _______________________
Проверил преподаватель Воронова Лилия Ивановна
Курган 1998
Рассмотрим
смешанную задачу для волнового уравнения ( ¶ 2 u/ ¶ t2) = c 2 * ( ¶ 2u/ ¶ x2) (1). Задача состоит в отыскании
функции u(x,t) удовлетворяющей данному уравнению при 0 < x < a,
0 < t £ T, начальным условиям u(x,0) = f(x), ¶ u(x,0)/ ¶ t = g(x) , 0 £ x £ a и нулевыми краевыми условиями u(0,t)
= u(1,t)=0.
Так как замена
переменных t ® ct приводит уравнение (1) к виду ( ¶ 2 u/ ¶ t2) = ( ¶ 2u/ ¶ x2), то в дальнейшем будем считать
с = 1.
Для построения
разностной схемы решения задачи строим в области D = {(x,t) | 0 £ x £ a, 0 £ t £ T } сетку xi = ih, i=0,1 ...
n , a = h * n, tj = j* ttt , j = 0,1 ... , m, t m = T и аппроксимируем уравнение (1)
в каждом внутреннем узле сетки на шаблоне типа “крест”.
t
T
j+1
j
j-1
0 i-1 i i+1
|
Используя для
аппроксимации частных производных центральные разностные производные, получаем
следующую разностную аппроксимацию уравнения (1) .
ui,j+1 - 2uij + ui,j-1
ui+1,,j - 2uij + ui-1, j
t 2 h2
|
(4)
Полагая, что l = t / h , получаем трехслойную разностную
схему
ui,j+1
= 2(1- l 2 )ui,j + l 2 (ui+1,j- ui-1,j)
- ui,j-1 , i = 1,2 ... n. (5)
Для простоты в
данной лабораторной работе заданы нулевые граничные условия, т.е. m 1(t) º 0, m 2(t) º 0. Значит, в схеме (5) u0,j=
0, unj=0 для всех j. Схема (5) называется трехслойной на трех
временных слоях с номерами j-1, j , j+1. Схема (5) явная, т.е. позволяет в
явном виде выразить ui,j через значения u с предыдущих двух слоев.
Численное решение
задачи состоит в вычислении приближенных значений ui,j решения
u(x,t) в узлах (xi,tj) при i =1, ... n, j=1,2, ... ,m . Алгоритм
решения основан на том, что решение на каждом следующем слое ( j = 2,3,4, ...
n) можно получить пересчетом решений с двух предыдущих слоев ( j=0,1,2, ... ,
n-1) по формуле (5). На нулевом временном слое (j=0) решение известно из
начального условия ui0 = f(xi).
Для вычисления
решения на первом слое (j=1) в данной лабораторной работе принят простейший
способ, состоящий в том, что если положить ¶ u(x,0)/ ¶ t » ( u( x, t ) - u(x,0) )/ t (6) , то ui1=ui0+
+ t (xi), i=1,2, ...
n. Теперь для вычисления решений на следующих слоях можно применять формулу
(5). Решение на каждом следующем слое получается пересчетом решений с двух
предыдущих слоев по формуле (5).
Описанная выше
схема аппроксимирует задачу с точностью до О( t +h2). Невысокий порядок
аппроксимации по t объясняется
использованием слишком грубой аппроксимации для производной по е в формуле (6).
Схема устойчива,
если выполнено условие Куранта t < h. Это означает, что малые погрешности, возникающие,
например, при вычислении решения на первом слое, не будут неограниченно
возрастать при переходе к каждому новому временному слою. При выполнении
условий Куранта схема обладает равномерной сходимостью, т.е. при h ® 0 решение разностной
задачи равномерно стремится к регшению исходной смешанной задачи.
Недостаток схемы
в том, что как только выбраная величина шага сетки h в направлении x ,
появляется ограничение на величину шага t по переменной t . Если необходимо
произвести вычисление для большого значения величины T , то может потребоваться
большое количество шагов по переменной t. Указанный гнедостаток характерен для
всех явных разностных схем.
Для оценки
погрешности решения обычно прибегают к методам сгущения сетки.
Для решения
смешанной задачи для волнового уравнения по явной разностной схеме (5)
предназначена часть программы, обозначенная Subroutine GIP3 Begn ... End .
Данная подпрограмма вычисляет решение на каждом слое по значениям решения с
двух предыдущих слоев.
Входные параметры
:
hx - шаг сетки h
по переменной х;
ht - шаг сетки t по переменной t;
k - количество
узлов сетки по x, a = hn;
u1 - массив из k
действительных чисел, содержащий значение решений на ( j - 1 ) временном слое,
j = 1, 2, ... ;
u2 - массив из n
действительных чисел, содержащий значение решений на j - м временном слое, j =
1, 2, ... ;
u3 - рабочий
массив из k действительных чисел.
Выходные
параметры :
u1 - массив из n
действительных чисел, содержащий значение решения из j - м временном слое, j =
1, 2, ... ;
u2 - массив из n
действительных чисел, содержащий значение решения из ( j +1) - м временном
слое, j = 1, 2, ... .
К части
программы, обозначенной как Subroutine GIP3 Begin ... End происходит
циклическое обращение, пеоред первым обращением к программе элементам массива
u2 присваиваются начальные значения, а элементам массива u1 - значения на
решения на первом слое, вычислинные по формулам (6). При выходе из подпрограммы
GIP3 в массиве u2 находится значение решения на новом временном слое, а в
массиве u1 - значение решения на предыдущем слое.
Порядок работы
программы:
1) описание
массивов u1, u2, u3;
2) присвоение
фактических значений параметрам n, hx, ht, облюдая условие Куранта;
3) присвоение
начального значения решения элементам массива и вычисленное по формулам (6)
значение решения на первом слое;
4) обращение к
GIP3 в цикле k-1 раз, если требуется найти решение на k-м слое ( k ³ 2 ).
Пример:
Решить задачу о
колебании струны единичной длины с закрепленными концами, начальное положение
которой изображено на рисунке. Начальные скорости равны нулю. Вычисления
выполнить с шагом h по x, равным 0.1, с шагом t по t, равным 0.05, провести
вычисления для 16 временных слоев с печатью результатов на каждом слое. Таким
образом, задача имеет вид
( ¶ 2 u/ ¶ t2) = ( ¶ 2 u/ ¶ x 2) , x Î [ 0 , 1 ] , t Î [ 0 , T ] ,
u ( x , 0 ) = f
(x) , x Î [ 0 , a ], ¶ u(x,0)/ ¶ t = g(x) , x Î [ 0 , a ],
u ( 0 , t ) = 0,
u ( 1 , t ) = 0, t Î [ 0 , 0.8 ],
æ 2x , x Î [
0 , 0.5 ] ,
f(x) = í g( x
) = 0
î 2 - 2x , x Î
[ 0.5 , 1 ] ,
Строим сетку из
11 узлов по x и выполняем вычисления для 16 слоев по t. Программа, и результаты
вычисления приведены далее.