Введение в вычислительную физику - Федоренко Р.П.
ISBN 5-7417-0002-0
Скачать (прямая ссылка):
Приведем достаточно популярные разностные уравнения.
Явная схема:
Принятый способ разностной аппроксимации называют схемой. Обычно структуру схемы поясняют ее шаблоном. Шаблон — это совокупность узлов сетки, в которых берутся значения функции, участвующие в аппроксимации уравнения в данном узле (п, т).
Неявная схема:
Шаблоны явной и неявной схем показаны на рис. 10.
Обычно каждое разностное уравнение относят к некоторому узлу счетной сетки. Удобно считать уравнения (1), (2) отнесенными к точке (n+l,m). He-
= 0, I, ..., N — 1 . Тем самым мы имеем уравнения для точек [m = 1, 2, ..., M- 1] х [п = 1, 2, ..., ArJ.
(1)
(2)
Явная схема
Неявная схема
трудно видеть, что эти уравнения могут быть составлены не во всех узлах сетки, а только во внутренних, т.е. в тех узлах, в которых шаблон не выходит за пределы сетки, в данном случае для m=l,2, ...,М— 1, п —
т-1 т т + 1
т-1 т т + 1
Рис. 10
§ И] ИНТЕГРИРОВАНИЕ УРАВНЕНИЙ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ IOl
Таким образом, без уравнений остались пока самый нижний ряд узлов и крайние левый и правый ряды. В этих узлах следует составить уравнения, аппроксимирующие начальные данные и краевые условия:
аппроксимация начальных данных:
Mm = Mo(*m)’ m = 0, 1, ..., AT;
аппроксимация левого краевого условия:
-Ct1 J1 U° + P1Mg =S И= 1, 2, .... N; (3)
аппроксимация правого краевого условия:
«2 -—ft-’1- + MSr = ViO„)> n=l,2,...,N, (4)
где а, > 0, Pi > 0, а, "Ь (З, > 0, г = 1,2. Теперь мы имеем столько неизвестных, сколько точек, и столько же уравнений.
Решение разностных уравнений. (Или, как принято говорить, реализация разностной схемы.) Чтобы завершить описание схемы, нужно дать алгоритм вычисления Mjjt, подсчитать количество операций и требуемые ресурсы памяти.
Общей чертой реализации разностных схем для так называемых эволюционных задач (т.е. задач, в которых одна из независимых переменных играет особую роль времени) является счет по слоям. Слоем мы называем совокупность неизвестных, определенных в узлах одного горизонтального ряда; п-й слой будем обозначать и", имея В виду величины {иЦ,}го = 0.
Схема счета по слоям очень проста. Пусть п-й слой уже сосчитан, т.е. переменные, входящие в и", и переменные всех предшествующих слоев U0tUi, ип~1 уже известны. Имеется алгоритм, который по значениям ип вычисляет un+l, используя, быть может, и другие нижние слои ип~1,... Этот алгоритм называют «реализацией шага», обозначим его S.
Заметим, что разностные уравнения (1), (2) связывают неизвестные только на двух соседних слоях. В этом случае реализация шага может быть записана в виде un+l = S(un)'. Такие схемы называют «двуслойными». В трехслойных схемах реализация шага имеет вид un+l = S(un, мп_1). Так как слой м° известен из начальных условий, можно находить последовательно слой за слоем: U1 = S(U0)t
и2 = S(ul) и т.д.
102
ОСНОВЫ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ
[Ч. I
Реализация явной схемы. Она совсем проста. Итак, пусть ип (п-й слой) известен. Запишем (1) в форме
<+l = «т + W-I - 2< + *Ctl) + * /m- (5)
Тем самым мы имеем явную формулу вычисления ы"+1, Ho только для m = 1, 2, ..., M — 1.
Для завершения шага нужно вычислить еще ug+1 и U1Jf1. Из левого краевого условия (3) находим
un + i = un+l . **»(W (6)
uO dj + APj uI ^ O1 + Api • V 7
Аналогично вычисляется U1Jf1 из правого краевого условия (4):
a, . hihAt )
un+l =_____-___un+l 4-2 "-- (T)
uM а2 + Ар2 M-I ^ а2 + Лр2‘
Вычисление Uq+1, U1Jf1 производится после расчета по формуле (5), так что значения U1J+1, Ujf^i уже известны. Легко подсчитать, что реализация шага требует O(M) операций и, следовательно, вся задача решается за O(MN) операций.
Оценим ресурсы памяти. На первый взгляд кажется, что требуется (N + 1 )(М +1) ячеек памяти. Ho нетрудно видеть, что можно обойтись и 2(М + 1)-й ячейкой, если заметить, что предшествующие слои больше не понадобятся и могут быть «забыты».
Приведем схему счета, в которой используются только два одномерных массива м0(0:М), и1(0:М). Можно обойтись и одним, используя на языке FORTRAN оператор EQUIVALENCE (м0(0), м1(2)). Разумеется, перенос массива мі наместо U0 (см. схему) в этом случае делается обратным циклом. Обратим внимание на то, что печатаются и просматриваются не все полученные в расчете числа, а только некоторые слои ип, соответствующие времени р, 2р, Зр и т.д.
Реализация неявной схемы. Здесь мы сталкиваемся с характерной для всех неявных схем проблемой — необходимостью решения так называемых уравнений на верхнем слое. В самом деле, пусть слой ип известен. Выписывая уравнения для точек (п+ 1)-го слоя и перенося неизвестные в левую часть, из (2)-(4) получаем
Л - (l + 2 + ^ ипт\\ = -Unm + xfnm,
hl т 1 \ hlj к
(Ct1 + К^)ип+1 - OlxU1J+1 =
(а2 + Ap2) U1Jf1 - O2U^+J1 = A^+1
11] ИНТЕГРИРОВАНИЕ УРАВНЕНИЙ С ЧАСТНЫМИ ПРОИЗВОДНЫМИ
Реализация явной схемы. Счет по слоям
Ввод или расчет исходной информации: Л/, N, т, Л, Т, P, Ct1, P1, а2> (32
Конкретизация функций W0(Jc), %(<). f(t, х)