t
T
j+1
j
j-1
0 i-1 i i+1
ui,j+1 - 2uij + ui,j-1
ui+1,,j - 2uij + ui-1, j
t 2 h2
|
(4)
Здесь uij - приближенное значение функции
u(x,t) в узле (xi,tj).
Полагая, что 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, ... ;
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 ] ,
î 2 - 2x , x Î [ 0.5 , 1
] ,
Строим сетку из 11 узлов по x и выполняем вычисления
для 16 слоев по t. Программа, и результаты вычисления приведены далее.
Похожие работы на - Решение смешанной задачи для уравнения
|