Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Численные методы для физиков-теоретиков. II

.pdf
Скачиваний:
2
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
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− 1sin2(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 = a1+α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
Du(x, t)∂
x
u(x, t).
x
Для этих двух классов уравнений приходится рекомендовать слегка разли­чающиеся методы.
Перепишем параболическое уравнение в общем виде. Разумеется, в от­личие от гиперболических уравнений, от второй производной по координа­те x тут не избавишься:
∂
u(x, t)=∂xR∂xu(x, t),u(x, t),x,t+ Au(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. Краеваязадачадлялинейныхуравнений
Очевидно, что краевая задача для линейных уравнений с делящимися переменными должна решаться точно так же, как и задача Коши для линей-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]