Скачиваний:
178
Добавлен:
15.06.2014
Размер:
672.39 Кб
Скачать

сти погрешности решения является еще требование устойчивости конечноразностной схемы к ошибкам округления.

Теоретическое исследование устойчивости конечно-разностной схемы сводится обычно к доказательству того, что малые возмущения fh f%h правой части (или начальных данных) системы приводят к малым изменениям решения

 

 

%

%

%

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

uh uh ; Lhuh = fh :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

%

 

 

 

 

 

 

 

 

 

uh uh

 

C0

 

 

,

(3.11)

 

 

 

 

 

 

 

 

 

fh fh

 

 

 

 

 

 

 

%

 

 

 

 

 

 

 

 

где C0

- константа устойчивости.

 

 

 

 

 

 

Основная теорема теории метода сеток утверждает, что если схема ус-

тойчива и аппроксимирует исходное ДУ, то при h 0 погрешность решения εh стремится к нулю с тем же порядком, что и погрешность аппроксимации:

 

ε

h

 

 

 

C

 

 

 

ψ

h

 

 

 

C C hp .

(3.12)

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0 ψ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2Решение систем обыкновенных дифференциальных уравнений

3.2.1.Задача Коши

 

 

dur

 

r

r

r0

.

 

 

 

 

 

(3.13)

 

 

dx

= f (x,u);

u(0) = u

 

 

 

 

 

 

 

 

Ω ={0 x b}

покрываем

равномерной

сеткой

Область

интегрирования

ωh ={kh,

k = 0..n}. Для нахождения таблицы решения

u

h

={urk ur(xk )}

исполь-

зуем интегроинтерполяционный

способ

с

разбиением Ω на подобласти

Ωk ={xk

x xk+1}.

Согласно этому

способу, для

получения

конечно-

разностной схемы

проинтегрируем уравнение (3.13) на каждом

интервале

[xk , xk+1] для k = 0,...,n-1 и разделим на длину этого интервала:

 

 

 

1 xk +1 dur

dx =

urk+1 urk

1 xk +1

r

r

 

 

(3.14)

 

 

 

=

f (x, u(x))dx .

 

 

 

h x

dx

 

 

h

 

h x

 

 

 

 

 

 

 

 

k

 

 

 

 

 

k

 

 

 

 

 

 

 

Интеграл в правой части (3.14) аппроксимируем одной из квадратурных

формул, после чего получаем систему уравнений относительно приближенных неизвестных значений искомой функции uh :

urk+1 urk

=

1

α j Fr j , Fr j = fr(x j ,ur j ); xkl x j xk+1; l = 0,1,2,....

(3.15)

h

 

h

j

 

здесь xj - точки внутри интервала, используемые для получения квадратурной формулы.

Структура конечно-разностной схемы (3.15) для задачи Коши такова, что она устанавливает закон рекуррентной последовательности urk+1 =ϕ(urk ) для

искомого решения ur0 , ur1, ur2 , ..., urn . Поэтому, используя начальное условие

42

задачи (3.13) и задавая ur0 =ur0 , затем по рекуррентным формулам последовательно находят все urk , k =1, ..., n.

При замене интеграла приближенной квадратурной формулой вносится погрешность аппроксимации дифференциального уравнения разностным, которая получается как невязка, если в конечно-разностном уравнении (3.15) под-

ставить вместо

u

k значение точного решения urk :

 

 

 

 

urk+1 urk

 

1

 

 

 

 

ψk =

α j f (x j , urj )

.

(3.16)

 

 

 

h

 

h

j

 

 

Воспользовавшись соотношением (3.14), получаем простое выражение для вычисления ψk (h) :

1

xk +1

r

r

r

 

ψk (h) = h

f

(x, u

(x))dx α j F j

(3.17)

 

xk

 

 

j

 

Таким образом порядок погрешности аппроксимации на единицу меньше порядка погрешности квадратурной формулы, используемой в (3.15).

Явная схема 1-го порядка (Эйлера)

Заменим интеграл в (3.14) по формуле левых прямоугольников:

 

 

 

 

 

1 xk +1

r

r

 

Frk h

r

 

 

 

 

 

 

 

 

f (x,u(x)dx

 

= F k .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h x

 

 

 

h

 

 

 

 

Получим

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

r

k+1 urk

 

 

 

 

 

 

 

 

 

 

= fr(x ,urk ), k

 

 

 

 

 

 

u

= 0, 1, 2, ..., n .

(3.18)

 

 

 

 

 

 

 

 

 

 

 

 

rh

 

k

 

 

 

 

 

 

r

0

 

 

 

 

 

 

 

 

 

Задавая u

=u0 , с помощью (3.18) легко получить все последующие зна-

чения urk , k =1,

 

 

2, ..., n , так как формула явно разрешается относительно

u

k+1 .

Погрешность аппроксимации ψ(h) и соответственно точность ε(h) имеют первый порядок в силу того, что формула левых прямоугольников на интервале [xx , xk+1] имеет погрешность второго порядка, а схема устойчива.

Неявная схема 1-го порядка

Используя в (4.15) формулу правых прямоугольников, получим

 

 

urk+1 urk

= fr(x

,urk+1) .

(3.19)

 

 

 

h

k+1

 

 

 

 

 

 

Эта схема неразрешима явно относительно u k+1 , поэтому для получения u k+1 требуется использовать итерационную процедуру решения уравнения (3.19) (см. метод простой итерации в подразд.1.4):

urk+1, s = urk + h f (x

, urk+1, s1); s =1,

2, ...номер итерации.

k+1

 

 

k+1, 0

= urk c предыдущего

За начальное приближение берется значение

u

шага. Обычно, если h выбрано удачно, достаточно сделать 2, 3 итерации для

43

xk+1

достижения заданной погрешности urk+1, s urk+1, s1 <ε . Эффективность неяв-

ной схемы заключается в том, что у нее константа устойчивости С0 значительно меньше, чем у явной схемы.

Неявная схема 2-го порядка

 

 

Используя в (3.15) формулу трапеций, получим

 

 

urk+1 urk

 

f (x, urk ) + fr(x

, urk+1)

 

 

h

=

k+1

 

.

(3.20)

2

 

 

 

 

 

Так как формула трапеций имеет третий порядок точности, то погрешность аппроксимации ψ(h) - второй.

Схема (3.20) не разрешена относительно u k+1 , поэтому требуется итерационная процедура (см.(4.19)):

r

r

 

h

r

r

r

(x

r

+1, s1);

s =1, 2, ...;

r

 

r

u k

+1, s = u k +

 

( f (x

, u k ) + f

,u k

u k+1, 0

= u k . (3.21)

 

 

 

2

k

 

 

k+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Схема Рунге-Кутта 4-го порядка

 

 

 

 

 

Используя в (4.15) формулу Симпсона, получим

 

 

 

 

 

urk+1 urk

=

1

r

 

r

r

 

 

r

r

 

 

r

.

(3.22)

 

h

 

f (x , u k ) + 4 f (x

 

, u k+1/ 2 ) + f (x

 

, u k+1)

 

 

6

k

 

 

k+1/ 2

 

k

+1

 

 

 

 

Ввиду того, что формула Симпсона имеет пятый порядок, погрешность

аппроксимации (3.22) имеет четвертый порядок.

 

 

 

 

 

 

Можно по-разному реализовать расчет неявного по urk+1

уравнения (3.22),

однако наибольшее распространение получила реализация предиктор-

корректор вида

 

r

r

 

 

h

r

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

(x

 

 

 

 

 

 

 

 

 

 

 

 

u k+1/ 2,1

= u k +

 

 

( f

 

, u k ),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

r

 

h

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

u k+1/ 2, 2

= u k +

2

f (x

 

 

, u k+1/ 2,1),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k+1/ 2

 

 

 

 

 

 

 

 

 

 

 

 

urk+1,1 = urk

+ hfr(x

 

, urk+1/ 2, 2 ),

 

 

 

 

 

 

 

h

 

 

 

r

 

 

 

k+1/ 2

 

 

 

r

 

 

r

 

 

r

r

f (x

r

(x

 

 

 

r

+1/ 2,1) +

(x

r

(x

r

u k+1

=u k +

6

, u k ) + 2 f

 

 

 

u k

2 f

u k+1/ 2, 2 ) +

f

,u k+1, 1) .

 

 

 

k

 

k

+1/ 2,

 

 

 

 

 

k+1/ 2,

 

 

k+1

 

Многошаговые схемы Адамса

При построении всех предыдущих схем для вычисления интеграла в правой части (3.14) использовались лишь точки в диапазоне одного шага [xk , xk+1].

Поэтому при реализации таких схем для вычисления следующего значения u k+1

необходимо знать только одно предыдущее значение u k , т.е. рекуррентная последовательность получается первого порядка. Такие схемы называют одношаговыми. Мы, однако, видели, что для повышения точности при переходе от xk к приходилось использовать и значения функции F внутри интервала

44

[xk+1/ 2 , urk+1/ 2 ] . Схемы, в которых это используется, называют схемами с дроб-

ными шагами. В этих схемах повышение точности достигается за счет дополнительных затрат на вычисление функции F(x) в промежуточных точках интервала [xk , xk+1].

Идея методов Адамса заключается в том, чтобы для повышения точности использовать уже вычисленные на предыдущих шагах значения u k , urk1, urk2 , ....

Заменим в (3.14) F(x) интерполяционным многочленом Ньютона вида

F(x) F(xk ) + (x xk ) F(xk ) hF(xk1) +

+(x xk )(x xk1) F(xk ) 2F(xk1) + F(xk2 ) + ... .

2h2

После интегрирования на интервале [xk , xk+1] получим явную экстраполяци-

онную схему Адамса. (Экстраполяцией называется получение значений интерполяционного многочлена в точках x, выходящих за крайние узлы сетки). В нашем случае интегрирование производится на интервале [xk , xk+1], а полином

строится по узлам xk , xk1, xk2 .

Порядок аппроксимации схемы в этом случае определяется количеством использованных при построении полинома узлов (например, если используются xk , xk1, то схема второго порядка).

Если в (3.14) заменим F(x) многочленом Ньютона вида

F(x) F(xk+1) + (x xk+1) F(xk+1)hF(xk ) +

+(x xk+1)(x xk ) F(xk+1) 2F(xk ) + F(xk1) +... , 2h2

то после интегрирования получим неявную интерполяционную схему Адамса. Заметим, что неявная интерполяционная схема второго порядка совпадает со схемой (3.20).

Явная экстраполяционная схема Адамса 2-го порядка

 

 

 

r

k+1 urk

=1,5 fr(x

, urk ) 0,5 fr(x

, urk1) .

 

u

(3.23)

 

 

 

 

 

 

 

h

k

k1

 

 

 

 

 

 

 

 

 

Схема двухшаговая, поэтому для начала расчетов необходимо найти u1 по методу (3.20), после чего ur2 , ur3, ... , вычислять по (3.23).

Явная экстраполяционная схема Адамса 3-го порядка

 

urk+1 urk

 

23 r

r

16

r

 

r

5

r

r

 

 

=

 

f (x , u k )

 

f (x

k1

, u k1) +

 

 

f (x

,u k2 ) .

(3.24)

 

 

 

 

 

h

 

12

 

k

12

 

 

12

k2

 

 

 

 

 

 

 

 

 

 

 

45

Схема трехшаговая, поэтому для начала расчетов необходимо найти методу (3.22), после чего ur3, ur4 , ..., вычислить по (3.24).

r

r

 

 

Неявная схема Адамса 3-го порядка

 

u k+1

u k

 

5

r

r

8

r

r

1

r

r

 

 

=

 

 

f (x

, u k+1) +

 

 

f (x , u k )

 

 

f (x

, u k1).

 

 

 

 

 

 

 

 

h

 

12

k+1

 

12

 

k

12

k1

 

 

 

 

 

 

 

 

u1, ur2 по

(3.25)

Так как схема двухшаговая, то для начала расчетов необходимо найти

u

1 по

методу (3.20), после чего ur2 , ur

3, ..., вычислить по (3.25).

 

 

 

 

 

 

Для нахождения urk+1 требуется использовать метод простой итерации:

urk+1, s = urk + h

5

fr(x

 

,

urk+1, s1) +

 

8

fr(x

, urk )

 

1

fr(x

 

, urk1) .

 

 

 

 

 

 

k+1

 

 

 

12

k

 

12

 

 

k1

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значение urk+1, 0 следует рассчитать по формуле (3.23):

 

 

rk1

 

 

 

 

 

 

rk+1, 0

rk

 

 

 

 

rk

 

 

r

 

 

)

 

.

 

 

 

u

= u

+ h 1,5 f (x , u

) 0,5 f (x

1

, u

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

k

 

 

 

 

 

 

 

 

Чаще всего бывает достаточно одной итерации. Если при этом разность urk+1,0 urk+1,1 оказывается большой, то следует уменьшить h.

46