Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Численные методы для физиков-теоретиков. II
.pdf
6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЧАСТНЫХ ПРОИЗВОДНЫХ 81
устойчивой схемы:
1
ˆu
u
=
n
2
+ dt
n−1
+ u
R(u
+
n+1
n+1,xn+1,tm
) − R(u
2dx
n−1,xn−1,tm
)
+ A(u
n,xn,tm
).
Для этой схемы получится:
2
|ˆa/a|
=cos2(kdx)+α2sin2(kdx)=1+α2− 1sin2(kdx),
т. е. схема устойчива при α<1, что означает dt < dx/R
для волновых уравнений величина R
— это что-то вроде скорости рас-
.Поскольку
пространения сигнала, то обычно произносят слова о том, что «сигнал
должен успеть добежать от соседнего узла до текущего узла, поэтому dt
ограничено». Вряд ли это хорошее объяснение. С равным успехом условие
dt < dx/R
можно получить просто по размерности.
6.2.3. Простейший удовлетворительный рецепт
Итак, нам необходимо написать устойчивую схему, которая имеет второй порядок как по времени, так и по координате. Одной из таких схем
является полушаговая схема, которую мы и рекомендуем для гиперболических задач. Она в некотором роде аналогична схеме Рунге-Кутта второго
порядка и требует одного дополнительного массива для записи полушаговых данных.
Прежде всего, делается полшага по времени (т. е. на dt/2), причем вы-
числяются значения функции u(x, t + dt/2) не в узлах решетки, а в точности
посередине между узлами:
R(u
n+1,xn+1,tm
1
A(u
+
2
n,xn,tm
) − R(un,xn,tm)
dx
)+A(u
n+1,xn+1,tm
+
)
.
u
n+1/2
1
u
=
+ u
n
2
n+1
+(dt/2)
А уже затем вычисляются значения ˆu
R(u
= un+(dt)
ˆu
n
n+1/2,xn+1/2
1
A(u
+
2
n−1/2,xn−1/2
:
n
,tm) − R(u
dx
,tm)+A(u
n−1/2,xn−1/2
n+1/2,xn+1/2
,tm)
+
,tm)
.

82 ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ ФИЗИКОВ-ТЕОРЕТИКОВ
Анализ устойчивости дает следующее выражение для ˆa:
ˆa = a1+αi sin(kdx)+αcos(kdx) −1
,
откуда
2
=1+α4(cos(kdx) −1)2− α2(cos(kdx) −1)2=
|ˆa/a|
2(α2
=1+α
− 1)(1 − cos(kdx))2.
Иными словами, схема устойчива при условии α<1.
Еще раз напомним, что в использованной нами несколько условной
записи опущены индексы, нумерующие компоненты векторов u
n,m
,R иA.
Иногда в литературе можно встретить двухслойную схему:
ˆu
=ˇun+(2dt)
n
R(u
n+1,xn+1,tm
)−R(u
2dx
n−1,xn−1,tm
)
+A(u
n,xn,tm
).
Это тоже схема второго порядка, она устойчива при условии α<1,номы
не рекомендуем ее применять. Дело в том, что двухслойная схема имеет
очень своеобразный дефект: вся двумерная решетка (x
на две подрешетки: узлы первой удовлетворяют условию (−)
второй — условию (−)
n+m
= −1. Обе подрешетки в двухслойной схеме
) расслаивается
n,tm
n+m
=1,узлы
эволюционируют совершенно независимо друг от друга и, как показывает
печальный опыт, «разъезжаются» в разные стороны.
6.2.4. Большее число измерений
До сих пор мы работали с гиперболическими уравнениями в двумерном (1+1) пространстве. Обобщение приведенных выше рецептов на случай (2+1), (3+1), ...(n +1) сделать не так уж сложно. Собственно, достаточно разобраться со случаем (2+1), а более высокие размерности обрабатываются совершенно аналогично. Прежде всего перепишем нашу систему
ДУЧП так, чтобы в ней остались только первые производные:
∂u(x, y, t)=∂
(u(x, y, t),x,y,t)+∂
R
x
x
(u(x, y, t),x,y,t)+
R
y
y
+A(u(x, y, t),x,y,t).
Введем решетку (x
n,ym,tk
), причем, просто чтобы не вводить лишние
буквы, будем считать, что шаг решетки по x совпадает с шагом решетки
по y: dx = dy. Опять-таки, просто чтобы укоротить формулы, выкинем

6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЧАСТНЫХ ПРОИЗВОДНЫХ 83
явную зависимость от x, y и t у функций Rx, Ryи A.Крометого,как
и в двумерном случае, опустим временной индекс и значок вектора: вместо
u
будем писать u
n,m,k
,авместоu
n,m
n,m,k+1
будем писать ˆu
n,m
.
Очевидно, что анализ устойчивости проводится точно так же, как
и в двумерном пространстве. Правда, у плоских волн, по которым раскладывается возмущение, волновое число будет вектором с компонентами
k
и ky:
x
= aexp(ikxxn+ ikyym)=a exp(ikxndx+ ikymdx).
δu
n,m
Кстати, обычно можно полагать k
= ky— если гармоника плоха по оси x,
x
она, скорее всего, будет так же плоха и по оси y.
Начнем с неудачной, зато устойчивой схемы:
ˆu
+dt
n,m
1
=
4
R
x(un+1,m
u
n−1,m
+ u
)−Rx(u
2dx
n+1,m
n−1,m
+ u
)
n,m+1
R
+
+ u
x(un,m+1
n,m−1
)−Rx(u
2dx
+
n,m−1
)
+A(u
n,m
).
Как и в двумерном (1+1) случае, устойчивость достигается «за счет соседей». Совершенно ясно, что если вместо среднего арифметического соседних узлов
написать просто u
1
4
n,m
u
n−1,m
+ u
n+1,m
+ u
n,m+1
+ u
, то амплитуда возмущения с любым волновым числом
n,m−1
начнет экспоненциально расти:
ˆa/a =1+αi sin(k
dx)+αi sin(kydx).
x
А вот если мы «цепляемся за соседей», то получается:
ˆa/a =cos(k
=cos(k
dx)/2+cos(kydx)/2+αi sin(kxdx)+αi sin(kydx)=
x
− ky)dx/2
x
cos(kx+ ky)dx/2+2iα sin(kx+ ky)dx/2
,
откуда
|ˆa/a|
2
=cos
2
(k
− ky)dx/2
x
1+(4α2− 1) sin
2
(k
+ ky)dx/2
x
.
Как уже было сказано, хуже всего этой схеме приходится при одинаковых
и ky: kx= ky= π/(2dx). Тем не менее, при α<1/2 схема устойчива.
k
x

84 ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ ФИЗИКОВ-ТЕОРЕТИКОВ
Соорудим теперь аналог полушаговой схемы, который мы и рекомендуем к использованию. Прежде всего, сдвигаемся на полшага по времени (dt/2) и вычисляем значения u в серединках квадратиков, примыкающих
кузлу(x
n,ym
).
n −1,m+1
uuu
n − 1/2,m+1/2 n +1/2,m+1/2
n − 1,m
uuu
n − 1/2,m− 1/2 n +1/2,m− 1/2
n −1,m− 1
uuu
u
u
n, m +1
n, m
n, m − 1
Эти четыре значения вычисляются так:
1
u
u
n+1/2,m+1/2
+(dt/2)
1
2
=
4
R
x(un+1,m
+ u
n,m
) − Rx(u
dx
n+1,m
n,m
1
4
A(u
) − Ry(u
dx
)+A(u
n,m
R
1
+
y(un,m+1
2
+
n,m
)
n+1,m
+ u
n,m+1
)
+
R
y(un+1,m+1
+
)+A(u
u
u
+ u
R
x(un+1,m+1
n,m+1
n +1,m+1
n +1,m
n +1,m− 1
n+1,m+1
) − Rx(u
dx
) − Ry(u
dx
)+A(u
+
n+1,m
n+1,m+1
n,m+1
)
)
+
+
)
.
Остальные три соотношения легко получить, заменяя пару индексов (n, m)
на (n − 1,m), (n, m − 1) и (n − 1,m−1). После этого делаем шаг на dt для

6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЧАСТНЫХ ПРОИЗВОДНЫХ 85
текущего узла (n, m):
ˆu
n,m
1
u
=
n+1/2,m+1/2+un−1/2,m+1/2+un+1/2,m−1/2+un−1/2,m−1/2
4
+(dt/2)
(u
R
1
x
n+1/2,m+1/2
2
) − Rx(u
dx
n−1/2,m+1/2
)
+
+
R
(u
x
+
n+1/2,m−1/2
) − Rx(u
dx
n−1/2,m−1/2
)
+
(u
R
1
y
+
2
n+1/2,m+1/2
) − Ry(u
dx
n+1/2,m−1/2
)
+
R
(u
y
+
1
+
A(u
n+1/2,m+1/2
4
n−1/2,m+1/2
)+A(u
) − Ry(u
n−1/2,m−1/2
dx
n−1/2,m+1/2
)+A(u
+ A(u
)
+
n+1/2,m−1/2
n−1/2,m−1/2
)+
)
.
Эта схема представляет собой двукратно примененную одномерную полушаговую схему, поэтому анализ устойчивости ничего нового не даст:
α<1/2. Распространить эту схему на случай (3 + 1) никакого труда не
представляет. Может возникнуть вопрос, отчего мы не брали в качестве
«полушаговых точек» середины ребер нашей сетки, т.е. точки (n, m ±1/2)
и (n ± 1/2,m). В общем-то, это вполне возможный вариант, но тогда при-
шлось бы вычислять производные по x и y на интервале 2dx,скажем,для
точки (n, m +1/2) пришлось бы писать:
1
R
x(un+1,m+1
2
) − Rx(u
2dx
n−1,m+1
)
12R
x(un+1,m
+
) − Rx(u
2dx
n−1,m
так что этой идеей лучше не пользоваться.
6.3. Задача Коши для параболических уравнений
Как ни странно, нам придется различать параболические уравнения
типа Шредингера
i∂
ψ(x, t)=−∂
t
2
ψ(x, t)+Vψ(x, t)
x
)
,

86 ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ ФИЗИКОВ-ТЕОРЕТИКОВ
и параболические уравнения теплопроводности
∂
u(x, t)=∂
t
Du(x, t)∂
x
u(x, t).
x
Для этих двух классов уравнений приходится рекомендовать слегка различающиеся методы.
Перепишем параболическое уравнение в общем виде. Разумеется, в отличие от гиперболических уравнений, от второй производной по координате x тут не избавишься:
∂
u(x, t)=∂xR∂xu(x, t),u(x, t),x,t+ Au(x, t),x,t.
t
Как и для гиперболических уравнений, эта запись весьма избыточна, от
величины A здесь можно избавиться. Заметим, что неизвестная функция
u(x, t) здесь однокомпонентна. Про случай нескольких компонент u(x, t)
мы сделаем отдельное замечание.
6.3.1. Анализ устойчивости
Как обычно, начнем с простейшей схемы:
ˆu
= un+ dt
n
− R
u
n+1
1
dx
dx
− u
R
n
− u
u
n+1
n
dx
u
+ u
n+1
,
n
2
+ u
u
n+1
,
x
n+1
,
2
2
+ x
n
n
,
,t
x
n+1
m
+ x
2
+ A(u
n
,t
−
m
n,xn,tm
).
При анализе устойчивости (подробности см. в разделе «Задача Коши для
гиперболических уравнений») основной вклад даст слагаемое с dx
менателе (оно соответствует второй производной). Как и ранее, введем обозначение R
для производной R по первому аргументу. Тогда амплитуда
2
взна-
возмущения с волновым числом k на следующем шаге будет равна:
dt
ˆa = a + a
Мы будем полагать, что R
2cos(kdx) −2.
R
2
dx
> 0,10поэтому ˆa/a всегда меньше единицы.
Однако, может оказаться, что ˆa/a < −1, а это тоже дает экспоненциальный
10
Случай R< 0 соответствует «взрывающемуся» уравнению, в котором все гармоники
действительно экспоненциально растут. Этот рост есть свойство уравнения, а не разностной
схемы. Мы же рассматриваем случай, когда уравнение не «взрывается», а разностная схема
неустойчива («взрывается»).

6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЧАСТНЫХ ПРОИЗВОДНЫХ 87
рост для амплитуды малого возмущения. При этом «веселее» всего будет
расти гармоника с k = π/dx, что соответствует поведению δu
Следовательно, необходимо потребовать dtR
/dx2< 1/2. Это означает ка-
=(−1)n.
n
тастрофу. Шаг по координате dx должен быть маленьким, чтобы получить
удовлетворительную точность для производной ∂
мени должен быть совсем микроскопический — порядка dx
. Но тогда шаг по вре-
x
2
. Заметим, что
это ограничение накладывается из-за таких решеточных степеней свободы,
которые к исходной непрерывной системе вообще никакого отношения не
имеют, а именно из-за волн вида δu
=(−1)n.
n
6.3.2. Два простейших рецепта
За спасение от катастрофы, описанной в предыдущем разделе, придется заплатить дорогую цену: мы будем использовать неявную схему. Это
значит, что мы получим не явное выражение для ˆu
ние для ˆu
, которое еще придется решать.
n
, а нелинейное уравне-
n
Первый вариант, который мы рекомендуем для уравнений типа Шредингера:
ˆu
n
− R
= un+
ˆu
n+1
+
− R
1
2
dx
1
2
− ˆu
dt
u
n+1
dt
1
dx
ˆu
n
,
1
dx
− u
dx
n+1
R
n
R
,
+ˆu
2
u
u
ˆu
n+1
n+1
n+1
n
,
dx
+ u
2
dx
x
− u
− ˆu
n+1
n
n
,
,
n
2
x
,
+ x
u
n+1
n+1
ˆu
n+1
n
,t
2
+ x
2
2
m+1
+ u
+ˆu
n
n
,
,t
n
x
,
m
x
n+1
n+1
2
+ A(ˆu
+ x
2
+ A(u
+ x
n
n,xn,tm+1
n
,t
,t
m+1
−
m
n,xn,tm
−
)+
).
Эта схема замечательна тем, что она второго порядка точности по времени.
Проверим ее устойчивость:
откуда
ˆa = a +ˆa
dt
2dx
ˆa/a =
2cos(kdx) − 2+ a
R
2
1 − y
, где y =
1+y
dx
dt
2dx
R
2
dt
2cos(kdx) − 2,
R
2
1 − cos(kdx).
Поскольку y>0,то|ˆa/a| < 1 без каких-либо условий на dt. Разумеется,
слишком большой шаг по времени dt взять невозможно — мы получим

88 ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ ФИЗИКОВ-ТЕОРЕТИКОВ
недостаточно точный ответ при взятии разностной производной по времени,
но соображениями устойчивости шаг dt не ограничен.
Казалось бы, этим вариантом и надо всегда пользоваться. Ничего подобного.
Второй вариант, который мы рекомендуем для уравнений переноса:
ˆu
= un+ dt
n
− R
ˆu
n+1
− ˆu
dx
1
dx
n
R
ˆu
n+1
,
ˆu
2
n+1
+ˆu
dx
n
− ˆu
,
x
n
n+1
+ˆu
ˆu
n+1
,
+ x
2
n
2
n
,t
m+1
+ x
x
n+1
,
n
2
+ A(ˆu
,t
n,xn,tm+1
m+1
−
).
Хотя эта схема на один порядок менее точная, чем предыдущая, как показывает опыт, для уравнений переноса надо использовать именно ее. Обратите
внимание, что даже там, где это не влияет на устойчивость, а именно во
втором аргументе R,стоитˆu. Опять-таки, это рецепт, проверенный экспе-
риментально.
Теперь обсудим, как решать полученную систему нелинейных уравнений относительно ˆu
. И в первом, и во втором варианте используется один
n
и тот же метод — метод Ньютона (см. часть I, раздел «Многомерные корни»).
К счастью, та система линейных уравнений, которую нам здесь придется решать, будет тридиагональной — ведь в n-ом уравнении присутствуют только
ˆu
n−1
, ˆunи ˆu
. Иными словами, n-ый узел решетки «запутан» только со
n+1
своими ближайшими соседями — с (n − 1)-ым и (n +1)-ым узлами. Это
означает, что количество операций, потраченных на одну итерацию в методе Ньютона, пропорционально первой степени N (N —количествоузлов
решетки по переменной x). В качестве начального приближения берется u
Опыт показывает, что метод Ньютона сходится к ˆu
за 5–6 итераций.
n
n
Итак, чтобы один раз шагнуть по времени на dt для параболического
уравнения, надо 5–6 раз решить тридиагональную СЛУ. Это требует заметно
большего числа операций, чем один шаг по времени для гиперболических
уравнений.
Сделаем существенное замечание.
При применении неявных схем приходится решать систему нелинейных уравнений. Ее вид таков, что применение итерационного метода прямотаки напрашивается. Действительно, величины ˆu
но равны u
, поскольку мы делаем один шаг по времени на маленькую
n
заведомо приблизитель-
n
величину dt. Следовательно, мы располагаем хорошим начальным приближением к корню. Кроме того, система написана как раз в подходящем виде
.

6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ В ЧАСТНЫХ ПРОИЗВОДНЫХ 89
(система в сущности выглядит как ˆun= F(ˆun)). Поэтому, казалось бы, полагаем ˆu
(k+1)
пока ˆu
n
(0)
= un, а затем последовательно вычисляем ˆu
n
не станет совпадать с ˆu
(k)
n
.
(k+1)
n
= Fˆu
(k)
n
Увы, опыт показывает, что если для уравнения необходимо применять
неявную схему, то метод итераций никогда не сходится. Так что для неявных схем можно использовать только метод Ньютона, а метод итераций
применять нельзя.
Наконец, сделаем замечание про случай нескольких компонент u(x, t).
Собственно, никаких принципиальных отличий от однокомпонентного случая нет, но зато есть довольно существенное техническое усложнение: матрица СЛУ, которая появится в методе Ньютона, будет не тридиагональной,
а блочно-диагональной. Способ решения такой СЛУ довольно подробно
изложен в разделе «Краевая задача ОДУ. Релаксационные методы».
6.3.3. Большее число измерений
К сожалению, здесь нас ждет не очень приятный сюрприз. Довольно
ясно, что анализ устойчивости для размерности (2+1) даст приблизительно
то же самое, что получилось в случае (1+1). Следовательно, неявной схемы
не избежать. Кстати, чтобы избежать уж очень громоздких записей, мы
сильно сократим наше параболическое уравнение:
i∂
u(x, y, t)
t
∂
u(x, y, t)
t
= ∂
xRx
∂
u(x, y, t)+ ∂yR
x
∂
y
y
u(x, y, t).
Кроме того, мы ограничимся рецептом для уравнения теплопроводности.
Этот рецепт легко распространить как на случай уравнения Шредингера,
так и на случай более сложного уравнения.
Теперь о неприятном сюрпризе. Если мы просто напишем:
ˆu
n,m
= u
n,m
+ dt
+
dx
1
dx
1
ˆu
n+1,m
R
x
ˆu
n,m+1
R
y
dx
dx
− ˆu
− ˆu
n,m
11
n,m
− R
− R
n,m
n,m
+
,
ˆu
x
ˆu
n,m+1
y
n+1,m
dx
− ˆu
dx
− ˆu
то мы не сможем применить метод Ньютона. Дело в том, что в этой системе
уравнений узел (n, m) запутан с четырьмя соседними узлами — (n − 1,m),
(n +1,m), (n, m − 1) и (n, m +1). Поэтому упорядочить узлы так, чтобы
11
Рецепт можно применять, если в уравнении можно расцепить вторые производные по осям
x и y.
,

90 ЧИСЛЕННЫЕ МЕТОДЫ ДЛЯ ФИЗИКОВ-ТЕОРЕТИКОВ
матрица СЛУ, которая появляется в методе Ньютона, стала тридиагональной (или хотя бы блочно-диагональной, см. раздел «Краевая задача ОДУ.
Релаксационные методы») невозможно. Поэтому если мы применим метод
Ньютона, то на каждой итерации нам придется решать СЛУ общего вида,
а это совершенно нереально, поскольку размер матрицы СЛУ будет N
2×N2
(мы полагаем, что количество узлов в решетках по осям x и y одинаково:
N
= Ny= N).
x
Выход из положения совершенно фантастический.
Сделаем один шаг по времени так, как будто второй производной по y
нет вовсе:
˜u
n,m
= u
n,m
+ dt
dx
1
˜u
n+1,m
R
x
dx
−˜u
n,m
−R
˜u
x
n+1,m
−˜u
dx
n,m
.
Затем сделаем второй шаг по времени так, как будто нет второйпроизводной
по x:
ˆu
n,m
=˜u
n,m
+ dt
dx
1
ˆu
n,m+1
R
y
dx
−ˆu
n,m
−R
ˆu
y
n,m+1
−ˆu
dx
n,m
.
На первом шаге вся задача делится на слои, параллельные оси x.
Для каждого фиксированного y
мы получаем одномерное параболическое
m
уравнение, решение которого подробно описано в предыдущем разделе.
Точно так же, на втором шаге вся задача делится на слои, параллельные
оси y, причем величины u
и x
эволюционируют совершенно независимо.
n
2
n1,m
и u
из двух разных слоев с разными x
n2,m
n
Трудно поверить, что такой рецепт может давать верный ответ, однако
опыт показывает, что он вполне применим.
Более того, и в совсем общем случае, когда в правой части системы
ДУЧП стоит сумма некоторых конструкций A
, ..., An, эту правую часть
1
можно обрабатывать пошагово. Именно, один шаг по времени на dt разби-
вается на n шагов. Сначала надо сделать первый шаг с помощью A
рируя остальные A
n-го шага, который делается с помощью A
), затем — второй шаг с помощью A2ит.д.,вплотьдо
i
.Болеетого,дляразныхшагов
n
(игно-
1
можно применять разные схемы, т. е., делая i-ый шаг, мы можем выбрать ту
схему, которая лучше подходит для данного A
.
i
1
6.4. Краеваязадачадлялинейныхуравнений
Очевидно, что краевая задача для линейных уравнений с делящимися
переменными должна решаться точно так же, как и задача Коши для линей-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
