Решения смешанной задачи для уравнения гиперболического типа методом сеток
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ Р.Ф.
КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТКафедра прикладной и высшей математики
Лабораторная работа № 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* ((( , j = 0,1 … , m, ( m = T и аппроксимируем уравнение (1) в
каждом внутреннем узле сетки на шаблоне типа “крест”.t
T
j+1
jj-1
0 i-1 i i+1
Используя для аппроксимации частных производных центральные разностные
производные, получаем следующую разностную аппроксимацию уравнения (1) .ui,j+1 — 2uij + ui,j-1 ui+1,,j — 2uij + ui-1, j
( 2
h2(4)
Здесь uij — приближенное значение функции u(x,t) в узле (xi,tj).
Полагая, что ( = ( / h , получаем трехслойную разностную схему
ui,j+1 = 2(1- ( 2 )ui,j + ( 2 (ui+1,j- ui-1,j) — ui,j-1 , i = 1,2
… n. (5)
Для простоты в данной лабораторной работе заданы нулевые граничные
условия, т.е. ( 1(t) ( 0, ( 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, ( ) — u(x,0) )/ ( (6) , то ui1=ui0+ + (
(xi), i=1,2, … n. Теперь для вычисления решений на следующих слоях можно
применять формулу (5). Решение на каждом следующем слое получается
пересчетом решений с двух предыдущих слоев по формуле (5).
Описанная выше схема аппроксимирует задачу с точностью до О( ( +h2).
Невысокий порядок аппроксимации по ( объясняется использованием слишком
грубой аппроксимации для производной по е в формуле (6).
Схема устойчива, если выполнено условие Куранта ( < h. Это
означает, что малые погрешности, возникающие, например, при вычислении
решения на первом слое, не будут неограниченно возрастать при переходе к
каждому новому временному слою. При выполнении условий Куранта схема
обладает равномерной сходимостью, т.е. при h ( 0 решение разностной
задачи равномерно стремится к регшению исходной смешанной задачи.
Недостаток схемы в том, что как только выбраная величина шага сетки h
в направлении x , появляется ограничение на величину шага ( по
переменной t . Если необходимо произвести вычисление для большого значения
величины T , то может потребоваться большое количество шагов по переменной
t. Указанный гнедостаток характерен для всех явных разностных схем.
Для оценки погрешности решения обычно прибегают к методам сгущения
сетки.
Для решения смешанной задачи для волнового уравнения по явной
разностной схеме (5) предназначена часть программы, обозначенная Subroutine
GIP3 Begn … End . Данная подпрограмма вычисляет решение на каждом слое по
значениям решения с двух предыдущих слоев.
Входные параметры :
hx — шаг сетки h по переменной х;
ht — шаг сетки ( по переменной 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 ).
Пример:1
0.5 0.5
Решить задачу о колебании струны единичной длины с закрепленными
концами, начальное положение которой изображено на рисунке. Начальные
скорости равны нулю. Вычисления выполнить с шагом h по x, равным 0.1, с
шагом ( по 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. Программа, и результаты вычисления приведены далее.