Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
35
Добавлен:
20.03.2016
Размер:
633.17 Кб
Скачать

Методы конечных разностей для решения уравнений в частных

производных

31

A x = b

(4.38)

Конкретное решение очень сильно зависит от вида матрицы. При ре• шении надо учитывать разреженность матрицы, в противном случае задача осложняется большими размерами матрицы: так, при сетке 100*100 надо найти 10000 uj,l , что приводит к матрице А размером 10000*10000.

Задачи с начальными условиями для уравнения сохранения потока

Большой класс одномерных задач с начальными условиями можно при• вести к уравнению сохранения потока:

u

= −

F(u)

,

(4.39)

t

 

x

где u и F векторы, и в некоторых случаях F зависит не только от u, но и от пространственных производных от u.

Например, для одномерного волнового уравнения с постоянной скоро• стью распространения волны

 

 

2u

= v2

2u

 

 

 

 

(4.40)

 

 

 

t2

 

x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

можно написать два уравнения первого порядка

 

r

= v

s

,

 

s

= v

r

,

(4.41)

 

t

 

 

 

 

 

 

 

 

x

 

 

t

x

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r = v

u

,

s =

u

 

 

(4.42)

 

 

x

t

 

 

 

 

 

 

 

 

 

 

 

 

В этом случае r и s — две компоненты u, а поток определяется линей• ным матричным уравнением

F(u) =

v

0

·

u

(4.43)

0

v

 

 

 

 

 

 

Уравнения (4.41) аналогичны уравнениям Максвелла для одномерной электромагнитной волны. Рассмотрим уравнение для скалярной величи• ны u

u

= −v

u

(4.44)

t

 

x

32

Детерминированное моделирование

Общее решение этого уравнения — волна, распространяющаяся в по• ложительном направлении оси x.

u = f(x vt)

Введем дискретные точки по x и t:

xj = x0 + j x,

j = 0, 1, . . . , J

tn = t0 + n t,

n = 0, 1, . . . , N

(4.45)

(4.46)

Пусть uj обозначает u(tn, xj). Мы можем различными способами пред• ставить производную по времени. Самый очевидный способ:

u

j,n

=

unj +1 unj

+ O(

t)

(4.47)

t

t

Это приближение первого порядка точности по временному шагу. Для пространственной производной используем приближение второго порядка.

u

j,n

un

1

un

1

+ O

x2

 

(4.48)

t

= j+

2

x j

 

 

 

 

 

 

 

 

 

 

 

Тогда конечно–разностная аппроксимация рассматриваемого уравне• ния, называемая FTCS (Forward Time Centered Space), примет вид:

unj +1 unj

= −v

unj+1 unj

1

 

 

 

2 x

 

(4.49)

t

 

 

Это выражение легко представляется как выражение для uj в момент времени n + 1. Это явная схема, т.е. uj в момент времени n + 1 мож• но вычислить явно по известным величинам. Алгоритм FTCS — пример одноуровневой схемы, т.е. для нахождения uj в момент времени n+1 доста• точно значений в момент времени n. К сожалению, схему можно применять только для исследования волн на небольшой части периода, так как эта схема нестабильна. Чтобы разработать схемы, применимые для реальных расчетов, рассмотрим критерий стабильности фон Неймана.

Анализ стабильности Фон Неймана

Представим, что коэффициенты рассматриваемых уравнений с частны• ми производными меняются очень слабо в пространстве и времени, и их можно считать постоянными. В этом случае независимые решения или соб• ственные моды уравнений можно искать в виде

Методы конечных разностей для решения уравнений в частных

производных

33

unj = ξneikj x,

(4.50)

где k действительное пространственное волновое число, которое может принимать любое значение, и ξ = ξ (k) — комплексное волновое число, ко• торое зависит от k. Временная зависимость единственной собственной мо• ды не что иное как последовательные (возрастающие) целые степени ком• плексной величины ξ. Следовательно, разностные уравнения нестабильны, если |ξ (k)| > 1 для каких-то значений k. Подставляя (4.50) в (4.49), полу• чим

ξ (k) = 1 − i

v

t

sin k x

(4.51)

 

x

Как видно из этого выражения, |ξ (k)| > 1 для всех k, т.е. схема FTCS нестабильна. Несмотря на возможно недостаточную строгость метода фон Неймана, он практически всегда дает верный ответ.

Метод Лакса

Простое изменение схемы, предложенное Лаксом, позволило улучшить ситуацию. Он предложил заменить значение функции u в узле j в момент времени n в производной по времени на среднее значение в узлах j − 1 и j + 1. Это привело к следующему выражению:

unj +1 =

1

unj+1 + unj−1

 

v

t

unj+1 unj−1

 

(4.52)

2

2

x

В этом случае для величины ξ получим:

ξ = cos k x i

v

t

sink x

(4.53)

 

x

Условие стабильности — квадрат модуля |ξ| должен быть меньше или равен единицы — приводит к условию:

|v| t

≤ 1

(4.54)

x

Это знаменитый критерий стабильности Куранта–Фридриха–Леви. Срав• ним схему Лакса и FTCS. Для этого перепишем схему Лакса в виде:

unj +1 unj

= −v

unj+1 unj

1

+

1

 

unj+1 − 2unj

+ unj

1

 

 

 

2 x

 

 

 

2 t

 

(4.55)

t

 

 

2

 

 

34

 

 

Детерминированное моделирование

Но это схема FTCS для уравнения:

 

 

 

 

 

u

 

u

(

x)

2

r2u,

 

 

 

= −v

 

+

 

 

 

(4.56)

 

t

x

2

t

 

т.е. в уравнении появился «диссипационный» член. Если |v| t в точ• ности не равно x, то амплитуда волны спадает.

Методы Якоби и Гаусса–Зейделя. Методы релаксации для решения граничных задач

Как упоминалось выше, методы релаксации разбивают разреженную матрицу на несколько, а затем задача решается при помощи итераций. Можно объяснить метод релаксации с физической точки зрения. Предпо• ложим, нам надо решить эллиптическое уравнение:

Lu = ρ

(4.57)

Здесь L — эллиптический оператор, а ρ — правая часть уравнения, тогда перепишем уравнение как уравнение диффузии:

u

= Lu − ρ.

(4.58)

t

Начальное распределение u релаксирует к равновесному решению при T , стремящемся к бесконечности. Уравнение диффузии для нашей задачи можно записать в виде:

 

 

 

 

 

 

 

 

u

2u

2u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

=

 

+

 

− ρ.

(4.59)

 

 

 

 

 

 

 

 

 

t

x2

y2

Если мы используем разностную схему FTCS, то получим:

 

unj,+l

1

= unj,l +

 

t

(unj+1,l + unj−1,l + unj,l+1 + unj,l−1 − 4unj,l) − ρj,l t

(4.60)

 

 

2

Эта схема устойчива, если

t/(

 

) ≤ 1/2, в двумерном случае

t/(

 

 

) ≤ 1/4. Возьмем максимально возможный шаг, при котором

t/(

 

 

) = 1/4, тогда уравнение (4.60) примет вид:

 

 

 

 

unj,+l

1

1

 

 

 

 

 

 

2

 

 

 

 

 

(unj+1,l + unj−1,l + unj,l+1 + unj,l−1) −

 

 

 

 

 

 

=

 

 

ρj,l

(4.61)

 

 

 

 

4

4

Эта классическая разностная схема была предложена в конце прошло• го века и называется методом Якоби. Этот метод редко используется на

Методы конечных разностей для решения уравнений в частных

 

производных

35

практике из–за медленной сходимости, однако он служит основой для по• нимания многих современных методов.

Второй классический метод называется методом Гаусса–Зейделя; этот метод используется в многосеточных методах решения граничных задач. В этом методе два значения неизвестной функции в правой части (4.61) берутся в момент времени n + 1, как только они становятся известны.

 

 

1

 

 

2

 

 

unj,+l

1 =

unj+1,l

+ unj+1,1 l + unj,l+1 + unj,+l11

 

ρj, l

(4.62)

 

 

4

4

Этот метод также медленно сходится, однако анализ этого метода мо• жет быть полезен.

Рассмотрим методы Якоби и Гаусса–Зейделя с точки зрения представ• ления матриц в виде суммы. Заменим обозначение u на x, чтобы получить

стандартный вид матричного уравнения.

 

A · x = b

(4.63)

Мы можем представить матрицу A в виде

 

A = L + D + U

(4.64)

Здесь −D — диагональная часть матрицы A, L — нижняя треугольная часть матрицы A, U — верхняя треугольная часть матрицы A; матрицы L и U содержат нули на диагонали. При использовании метода Якоби итерацию на r–м шаге можно записать в виде:

D · x(r) = −(L + U) · x(r−1) + b

(4.65)

Матрица −D−1 (L + U) — итерационная матрица, при помощи кото• рой находится следующее итерационное приближение. Была произведена для этого метода оценка числа итераций, необходимых для достижения точности 10p

r

p ln 10

(4.66)

(

ln p

)

 

s

 

 

При увеличении размерности сетки J спектральный радиус ps стремит• ся к единице. Для данного конкретного уравнения, граничных условий и геометрии сетки спектральный радиус, в принципе, можно вычислить ана• литически, так для сетки размерности J J с условиями Дирихле на всех четырех границах асимптотическая формула для больших J имеет вид:

ps ' 1 −

π2

(4.67)

2J2

36

Детерминированное моделирование

При этом необходимое число итераций можно оценить по формуле:

r '

2pJ2 ln 10

'

1

pJ2

(4.68)

π2

 

 

2

Другими словами, число итераций пропорционально числу точек сетки. Методу Гаусса–Зейделя соответствует следующее матричное уравне•

ние:

 

(L + D) · x(r) = −U · x(r−1) + b

(4.69)

Для рассматриваемой нами модели спектральный радиус и число ите•

раций можно оценить по формулам:

 

 

 

 

 

 

 

ps ' 1 −

π2

(4.70)

 

 

J2

 

 

 

r '

pJ2 ln 10

'

1

pJ2

(4.71)

π2

 

4

Метод SOR(метод последовательной верхней релаксации)

Мы получим лучший алгоритм — один из самых распространенных до семидесятых годов прошлого века, — если мы скорректируем величину x(r) на r-м шаге итераций Гаусса–Зейделя. Из метода Гаусса–Зейделя следует:

x(r) = x(r−1) − (L + D)−1 · [(L + D + U) · x(r−1) b]

(4.72)

Член в квадратных скобках - вектор невязки ξ(r−1) т.е.

x(r) = x(r−1) − (L + D)−1 · ξ(r−1)

(4.73)

Для улучшения сходимости введем так называемый параметр «сверх релаксации» ω:

x(r) = x(r−1) − ω(L + D)−1 · ξ(r−1)

(4.74)

Метод, использующий эту схему, назвали методом SOR (successive over relaxation). Можно доказать следующие теоремы: метод сходится только для 0 < ω < 2; если 0 < ω < 1, то говорят о недостаточно быстрой релак• сации. При определенных математических ограничениях, которым удовле• творяют матрицы, получающиеся в методах конечных разностей, только при 1 < ω < 2 этот метод сходится быстрее метода Гаусса–Зейделя.

Методы конечных разностей для решения уравнений в частных

 

производных

37

Если ρJacobi спектральный радиус итерационной схемы Якоби, (квад• рат его — спектральный радиус метода Гаусса–Зейделя), то оптимальное значение ω имеет вид:

ω = q

2

(4.75)

1 + 1 − ρ2Jacobi

Спектральный радиус при этом равен

 

ρJacobi

2

 

ρSOR =

q

 

 

(4.76)

1 + 1 − ρ2Jacobi

Если использовать выражение для радиуса Якоби, то получим: Для

достижения точности 10p необходимо следующее число итераций:

 

 

pJ ln 10

1

 

r =

 

=

 

pJ

(4.77)

3

Отсюда следует, что метод SOR для достижения точности 10p требу• ет количества итераций, пропорционального J, а не J2. При помощи этого численного метода можно с успехом решать граничные задачи для уравне• ний в частных производных.

Рассмотрим эллиптическое уравнение второго порядка относительно двух переменных x и y и напишем разностную схему для квадратной об• ласти. Каждой строке матрицы А в матричном уравнении Ах = b соответ• ствует выражение

aj,l uj+1,l + bj,l uj−1,l + cj,l uj,l+1 + dj,l uj,l−1 + ej,l uj,l = fj,l

(4.78)

Для рассматриваемой нами задачи a = b = c = d = 1, e = 4. Итераци• онную формулу можно написать в виде

uj,l =

1

fj,l aj,l uj+1,l bj,l uj−1,l cj,l uj,l+1 dj,l uj,l−1

 

(4.79)

ej,l

Средневзвешенное значение имеет вид

 

 

 

 

unewj,l = ωuj,l + (1 − ω)uoldj,l

 

(4.80)

Невязку для нашей задачи можно записать:

38

Детерминированное моделирование

ξj,l = aj,l uj+1,l + bj,l uj−1,l + cj,l uj,l+1 + dj,l uj,l−1 + ej,l uj,l fj,l

(4.81)

Используя формулу метода SOR, можно записать

 

unewj,l = uoldj,l − ω

ξj,l

(4.82)

ej,l

 

Эту формулу можно очень легко запрограммировать, и норма невязки может служить критерием окончания итерационного процесса.

Узлы сетки можно разбить на четные и нечетные, при этом окажется, что значения в четных узлах зависят только от значений в нечетных узлах и наоборот. В программе, приведенной ниже, такое разбиение используется.

Асимптотическая оценка скорости сходимости метода SOR может слу• жить лишь для оценки порядка количества итераций; в реальности коли• чество итераций может быть в 20 раз больше асимптотической оценки.

В методе SOR с ускорением Чебышева используется динамическое вы• числение коэффициента релаксации

ω(0)

= 1

 

 

 

 

ω(1/2) =

 

1

 

 

 

 

 

 

 

 

 

 

1

− ρJacobi2 /2

 

ω(n+1/2) =

 

 

1

 

 

,

(4.83)

 

 

 

 

 

 

1 − ρJacobi2

ω(n) /4

 

n= 1/2, 1, . . . , ∞

ω(∞) → ωoptimal

Важным достоинством этой реализации метода SOR является умень• шение нормы ошибки на каждой итерации (имеется в виду ошибка при вычислении решения) Текст программы на языке С приведен ниже.

#include <math.h> #define MAXITS 1000 #define EPS 1.0e-5

void sor(double **a, double **b, double **c, double **d, double **e, double **f, double **u, int jmax, double rjac){

void nrerror(char error_text[]); int ipass, j, jsw, l, lsw, n;

double anorm, anormf = 0.0, omega = 1.0, resid;

Методы конечных разностей для решения уравнений в частных

производных

39

for(j =

2; j <

jmax; j++)

for(l

=

2; l

< jmax; l++)

anormf += fabs(f[j][l]);

for(n =

1; n <= MAXITS; n++) {

anorm

=

0.0;

 

jsw =

1;

 

 

for(ipass = 1; ipass <= 2; ipass++) {

lsw

=

jsw;

 

for(j

= 2; j < jmax; j++) {

for(l = lsw + 1; l < jmax; l += 2) { resid = a[j][l] * u[j+1][l]

+b[j][l] * u[j-1][l]

+c[j][l] * u[j][l+1]

+d[j][l] * u[j][l-1]

+e[j][l] * u[j][l] - f[j][l];

anorm += fabs(resid);

u[j][l] -= omega * resid / e[j][l];

}

lsw = 3 - lsw;

}

jsw = 3 - jsw;

omega = (n == 1 && ipass == 1 ? 1.0 / (1.0 - 0.5 * rjac * rjac) : 1.0 / (1.0 - 0.25 * rjac * rjac * omega));

}

if(anorm < EPS*anormf) return;

}

nrerror("MAXITS exceeded");

}

Главным достоинством метода является простота использования, а глав• ным недостатком — недостаточно быстрая сходимость при решении боль• ших задач.

Метод Кранка–Николсона

Если в схеме FTCS для одномерного уравнения диффузии в правой ча• сти взять значения функции в момент времени n+1, то получим полностью неявную схему.

unj +1 unj

= D "

unj++11 − 2unj +1 + unj +11

#

 

 

( x)2

(4.84)

t

 

Параметр ξ для этой схемы имеет вид:

40

Детерминированное моделирование

ξ =

1

 

(4.85)

 

 

1 + 4α sin2 k

2 x

Эта схема устойчива при любых шагах по времени.

При решении одномерного уравнения диффузии можно сочетать устой• чивость неявной схемы с точностью второго порядка по пространству и времени. Представим одномерное уравнение диффузии в разностном виде следующим образом:

unj +1 unj

=

D

 

unj++11

− 2unj +1 + unj+11

unj+1 − 2unj + unj−1

 

 

(4.86)

t

2

 

(

2

 

 

 

x)

 

 

 

 

 

 

 

 

 

 

 

Параметр ξ для исследования устойчивости по критерию Неймана име• ет вид:

 

1

− 2α sin2

k

2 x

 

 

ξ =

1

+ 2α sin2

k

2 x

 

(4.87)

 

 

 

 

 

 

 

Отсюда следует, что схема стабильна при любом шаге по времени. Эта схема называется схемой Кранка–Николсона и часто применяется для ре• шения диффузионных задач.

На рисунке 4 представлены три схемы для решения уравнения диффу• зии. (a) — FTCS — первого порядка точности, но стабильна только при малых шагах по времени, (b) — стабильная полностью неявная схема пер• вого порядка точности, (с) — схема Кранка–Николсона второго порядка точности, стабильная при больших шагах по времени.

Рассмотрим двумерную задачу диффузии

 

 

 

 

u

 

 

2u

2u

 

 

 

 

 

 

 

 

 

= D

 

+

 

 

 

(4.88)

 

 

 

 

 

t

x2

y2

 

с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

unj,+l

1 = unj,l +

1

α δx2unj,+l 1 + δx2unj,l + δy2unj,+l

1 + δy2unj,l ,

(4.89)

 

 

где

2

 

 

 

 

α ≡

D

t

,

x =

y,

(4.90)

 

 

 

 

 

2

 

 

 

δx2unj,l unj+1,l

− 2unj,l

+ unj−1,l .

(4.91)