Download as pdf or txt
Download as pdf or txt
You are on page 1of 46

Чисельне розв'язування крайових задач

для звичайних диференціальних рівнянь

§1. Крайові задачі для звичайних диференціальних рівнянь

Крайова задача полягає у знаходженні розв’язку системи звичайних диференціальних


рівнянь першого порядку
u ( x )  f  x , u( x ) ,
де
u  u1, u2 ,, un T , f   f1, f 2 ,, f n T ,
на відрізку a  x  b , який задовольняє граничні (крайові) умови. У загальному випадку граничні
умови мають вигляд нелінійних співвідношень між значеннями um ( x ), m  1, n у двох або більше
точках цього відрізка. Якщо граничні умови задаються лише на кінцях відрізка [a, b] , то крайова
задача називається двоточковою. Відомо, що диференціальне рівняння n -го порядку можна звести
до системи n рівнянь першого порядку. Тому часто розглядають крайові задачі для рівняннь n -го
порядку.
Розглянемо диференціальне рівняння другого порядку:
u  f ( x , u, u). (1)
Двоточкова крайова задача для рівняння (1) — це задача знаходження функції u( x ) , яка
задовольняє рівняння (1) всередині відрізка [a, b] , а на кінцях — крайові умови
1 (u( a ), u( a ))  0,
(2)
2 (u( b), u(b))  0.
Якщо диференціальне рівняння і крайові умови — лінійні, то крайова задача — лінійна.
Чисельні методи розв’язування крайових задач для звичайних диференціальних рівнянь
поділяють на два основні типи: методи зведення крайових задач до послідовності задач Коші, до
яких належить метод стрільби та сіткові методи, до яких належать методи скінченних різниць та
скінченних елементів.
§2. Метод стрільби
Основну ідею методу стрільби розглянемо на прикладі нелінійної крайової задачі
u  f ( x , u, u), a  x  b, (1)
u( a )  1, u(b)   2 . (2)
Розв’язок рівняння (1) з початковими умовами u( a )  1, u(a )  s позначимо через u( x; s) . Тоді,
якщо ми знайдемо потрібний кут стрільби s  s* такий, що u(b, s* )   2 , то розв’язок задачі Коші
буде також розв’язком крайової задачі (1), (2). Таким чином, отримаємо нелінійне алгебраїчне
рівняння, розв’язок якого s  s* задовольняє рівняння u(b, s)   2 . Це нелінійне рівняння можна
розв’язати за допомогою ітераційних методів. Розв’язавши задачу Коші ще раз з s  s* отримаємо
розв’язок крайової задачі (1), (2).
2.1. Метод однократної стрільби. Розглянемо лінійну крайову задачу
u  A( x )u  f ( x ), a  x  b, (3)
Ba u( a )  Bbu(b)  d , (4)
де u( x ), f ( x ), d — вектори розміру n , A( x ), Ba , Bb — матриці розміру n  n . Надалі будемо
припускати, що A( x ), f ( x ) неперервні на [a, b] та rankBa , Bb   n .
Загальний розв’язок рівняння (3) може бути записаний як
u( x )  U ( x )s  v( x ), a  x  b , (5)
де s — вектор-параметр розміру n , v (x ) — частинний розв’язок рівняння (3), U (x ) —
фундаментальний розв’язок, тобто розв’язок матричної задачі Коші
U   A( x )U , a  x  b, (6)
U (a)  I . (7)
Дійсно, якщо функцію (5) підставити в (3), то отримаємо тотожність
U   A( x)U s  v  A( x )v  f ( x)  0 .
Частинний розв’язок v (x ) може бути визначений як розв’язок задачі Коші
v  A( x ) v  f ( x ), a  x  b, (8)
v (a )  0 . (9)
Отже, стовпці матриці U (x ) і вектор v (x ) можуть бути обчислені як розв’язки n  1 задачі Коші.
Вектор-параметр s визначимо з умови, щоб функція (5) задовольняла крайову умову (4).
Підставимо (5) в (4), тоді будемо мати
BaU ( a )s  Ba v( a )  BbU ( b)s  Bb v( b)  d .
Звідси, враховуючи початкові умови (7), (9), отримаємо систему лінійних алгебраїчних рівнянь
відносно вектора s
Qs  dˆ , (10)
де
Q  Ba  BbU (b), dˆ  d  Bb v( b) .
Припускаючи, що крайова задача (3), (4) має єдиний розв’язок, можна показати, що матриця Q
буде не виродженою.
При практичній реалізації задачі (6), (7) та (8), (9) розв’язують чисельно на деякій
ˆ  {x , i  0, N , x  a , x  b} , а далі розв’язують систему лінійних рівнянь
нерівномірній сітці h i 0 N
(10) і обчислюють розв’язок крайової задачі (3), (4) у вузлах сітки ̂h за формулою (5).
Розглянемо тепер систему нелінійних звичайних диференціальних рівнянь першого порядку
u  f ( x , u), a  x  b , (11)
з загальними двоточковими крайовими умовами
g( u( a ), u( b))  0 . (12)
Через u( x; s) позначимо розв’язок системи (11), який задовольняє початкову умову
u(a; s)  s . (13)
Тоді задача (11), (12) зводиться до знаходження вектора s  s* , який є розв’язком системи
нелінійних алгебраїчних рівнянь
F( s* )  0 , (14)
де
F( s)  g(s, u(b; s)) . (15)
Розв’язок системи (14), (15) можна обчислити за допомогою ітераційного методу Ньютона
1
( k 1) (k )
 F(s( k ) )  (k )
s s   F(s ), k  0,1,...
  s 
Будемо припускати, що початкове наближення s( 0) задано. Таким чином, на кожній ітерації
F( s(k ) )
необхідно обчислити матрицю Якобі і розв’язати ситему лінійних рівнянь
s
F( s( k ) ) ( k )
s  F( s( k ) ),
s (16)
s( k 1)  s( k )  s( k ) .
Для обчислення F( s)  g(s, u(b; s)) при s  s(k ) потрібно обчислити u(b; s(k ) ) , тобто розв’язати
задачу Коші (11), (13) при s  s(k ) . Введемо позначення
g( y , v) g( y , v)
Ba ( s)  , Bb ( s) 
y y  s v y  s
v  u ( b;s ) v  u ( b;s )

u ( x ; s )
і U ( x )  U ( x; s )  — матриця розміру n  n . Якщо продиференціювати диференціальне
s
рівняння (11) та початкову умову (13) по s , то отримаємо, що функція U (x ) є розв’язком задачі
Коші
U   A( x )U , a  x  b, (17)
U (a)  I , (18)
де
f ( x, u( x; s))
A( x )  A( x, s)  . (19)
u
Тоді з (15) випливає, що
F( s)
 Ba (s)  Bb ( s)U (b; s) .
s
Зазначимо, що величини u( x; s) та U (x ) будемо заміняти їх чисельною апроксимацією,
одержаною чисельним розв’язуванням задач Коші (11), (13) і (17), (18) відповідно.
F( s)
Іноді корисною альтернативою є апроксимація матриці скінченними різницями, тобто
s
F (s )
j -й стовпець апроксимується співвідношенням
s j

 j 1 F( s   j e j )  F(s) , 
де e j — j -й одиничний вектор, тобто вектор в j -му рядку якого стоїть 1, а всі решта елементи

рівні 0 ,  j  s j  M , де s j — j -та компонента вектора s ,  M — машинна точність. Це вимагає


ще одного обчислення вектора F( s   j e j ) , тобто розв’язування n  1 нелінійної задачі Коші на
F( s)
кожній ітерації, але дозволяє запобігти явного обчислення матриці Якобі та матриці A(x )
s
за формулою (19).

2.2. Метод многократної стрільби. Головний недолік методу однократної стрільби


нагромадження похибок заокруглень, що виникають через нестійкість задач Коші, щоб запобігти
цьому було розроблено метод многократної стрільби.
Припустимо, що інтервал [a, b] розбитий точками сітки a  x0  x1  ...  x M  b на частини і
розглянемо задачі Коші для i  0, M  1
u  f ( x , u), xi  x  xi 1 , (20)
u( xi )  si . (21)
Розв’язок задач (20), (21) позначимо через ui ( x; si ) .
Невідомі nM параметри

sT  sT0 , s1T ,..., sTM 1 
будуть визначатися з умов, що чисельний розв’язок задачі (11), (12) неперервний на інтервалі
[a, b] і такий, що крайові умови (12) задовольняються. Отже, шуканий розв’язок визначається
рівністю
u( x )  ui ( x; si ), xi  x  xi 1, i  0, M  1 ,
де умови на s такі
ui ( xi 1; si )  si 1, i  0, M  2,
(22)
g(s0 , u M 1 (b; s M 1))  0.
Систему nM нелінійних рівнянь (22) запишемо у вигляді
 F1( s)   s1  u0 ( x1; s0 ) 
   
 2F ( s )   s 2  u ( x
1 2 1 ; s ) 

F( s)  .........   ..................................   0 . (23)
   
 FM 1(s)   s M 1  u M  2 ( x M 1; s M  2 ) 
 F (s )   g (s , u 
 M   0 M 1 (b; s M 1 )) 
Для розв’язування системи (23) використаємо ітераційний метод Ньютона
F( s( k ) ) ( k )
s  F( s( k ) ),
s (24)
( k 1) (k ) (k )
s s  s
з матрицею Якобі
  U 0 ( x1) I 
 
  U1 ( x2 ) I 
F( s)  ,
  
s  
  U M  2 ( x M 1) I 
 B ( s) Bb (s)U M 1(b) 
 a
ui ( x; si )
де U i ( x )  U i ( x; xi , si )  — матриця розміру n  n , яка є розв’язком задачі
s
U i  A( x )U i , xi  x  xi 1,
U ( xi )  I , i  0, M  1 .
Підставляючи матрицю Якобі в (24) отримаємо систему лінійних рівнянь:
s1( k )  U 0 ( x1 ) s(0k )   F1( s( k ) ) ,

s(2k )  U1( x2 ) s1( k )   F2 ( s( k ) ) ,


............................................................
s(Mk )1  U M  2 ( x M 1 ) s(Mk ) 2   FM 1( s( k ) ) ,

Ba ( s) s(0k )  Bb (s)U M 1(b) s(Mk )1   FM (s( k ) ) .


Тоді
s1( k )  U 0 ( x1 )s(0k )  F1 (s( k ) ),
s(2k )  U1 ( x2 )U 0 ( x1 ) s(0k )  F2 (s( k ) )  U1( x2 )F1 (s( k ) ),
....................................................................................... (25)
s(Mk )1  U M  2 ( x M 1 )U M  3 ( x M  2 )...U 0 ( x1) s(0k ) 
M 2  j 
 U ( x M  l ) FM  j 1 (s( k ) ),
    M  l 1 
j  0  l 1 
Ba (s)  Bb ( s)U M 1( b)U M  2 ( xM 1)...U 0 ( x1 ) s(0k )  w , (26)
де
w   FM (s( k ) )  BbU M 1 (b)FM 1( s( k ) )  BbU M 1(b)U M  2 ( x M 1 )FM  2 (s( k ) ) 
 ...  BbU M 1 (b)U M  2 ( x M 1 )...U1( x2 ) F1(s( k ) ).
Система (26) — це система лінійних алгебраїчних рівнянь відносно невідомого вектора s(0k ) , яка

може бути розв’язана методом Гауса. Знайшовши s(0k ) послідовно обчислимо

s(i k 1)  U i ( xi 1 ) si( k )  Fi 1(s( k ) ), i  0, M  2 ,


тоді
s(i k 1)  s(i k )  si( k ) , i  0, M  1 .
Як у випадку методу однократної стрільби елементи матриці Якобі U i ( xi 1 ) можна замінити
їх скінченно-різницевою апроксимацією. На кожному інтервалі стрільби ( xi , xi 1 ) обчислимо
апроксимацію розв’язку задачі (20), (21) ui ( xi 1; si ) . Одночасно ще n розв’язків рівняння (20) з
початковими умовами
~
U ( xi ; si )  si ... si    M I ,
де si ... si  — матриця роміру n  n , стовпцями якої є вектори si ,  M — машинна точність. Тоді
апроксимацію U i ( xi 1 ) обчислимо за формулою
~
 
U i ( xi 1 )   M1 2 U i ( xi 1; si )  ui ( xi 1; si ) ... ui ( xi 1; si )  .
§5. Лінійні багатокрокові методи

5.1. Методи Адамса. Введемо на інтервалі [t0 , T ] рівномірну сітку


  {tn  t0  n, n  0, n0} з кроком   (T  t0 ) n0 . Якщо рівняння (1) §2 проінтегрувати на
відрізку [tn , tn 1 ] , то одержимо
t n 1
un 1  un   f (t , u(t ))dt . (1)
tn

Припустимо, що нам відомі наближені значення yn  k 1, yn k  2 ,..., yn точного розв’зку


un  k 1, un k  2 ,...,un задачі (1), (2) §2, тоді можна вважати також, що ми маємо і величини
f j  f (t j , y j ), j  n  k  1, n . Замінимо функцію f (t, u ) в (1) інтерполяційним многочленом

Ньютона, який проходить через точки {(t j , f j ), j  n  k  1, n} . Його можна виразити через різниці
назад:
s s ( s  1) 2
P( t )  P( tn  s)   0 f n  f n   fn 
1! 2!
s( s  1)...( s  k  2) k 1
 ...   fn  (2)
( k  1)!
k 1
s( s  1)...( s  j  1) j
 0 f n    fn .
j 1
j!

Тоді чисельний аналог (1) буде задаватися формулою


t n 1
y n 1  yn   P(t )dt .
tn

Після заміни змінної s  ( t  tn )  в останньому інтегралі та підставляння виразу (2) будемо мати
1 k 1

yn 1  yn   P (tn  s)ds  yn     j j f n , (3)
0 j 0
де коефіцієнти  j обчислюються за формулами
1
1
 0  1, j 
j! 
s( s  1)...( s  j  1)ds, j  1, k  1.
0
Формула (3) дозволяє визначити yn 1 явно, тому її називають явним методом Адамса.
Розглянемо частинні випадки (3). Якщо для k  1,4 , обчислити
 j , j  0,3 (  0  1, 1  1 2 ,  2  5 12 ,  3  3 8) та виразити різниці назад через f n  j , то одержимо
такі формули

1
y n 1  yn  f n , k  1,
3 1 
y n 1  yn   f n  f n 1 , k  2,
2 2 
 23 16 5 
y n 1  yn   fn  f n 1  f n  2 , k  3,
 12 12 12 
 55 59 37 9 
y n 1  yn   fn  f n 1  f n 2  f n  3  , k  4.
 24 24 24 24 
Зауважимо, що при k  1 ми маємо явний метод Ейлера.
Формули (3) одержані при інтегруванні інтерполяційного многочлена від tn до tn 1 , тобто
зовні інтервалу інтерполяції (tn  k 1, tn ). Добре відомо, що зовні цього інтервалу інтерполяційний
многочлен дає досить погане наближення. Тому дослідимо також методи, що грунтуються на
інтерполяційному многочлені, який додатково використовує точку (tn 1, f n 1 ) , тобто
s 1 ( s  1) s 2
P * ( t )  P * (tn  s)   0 f n 1  f n  1   f n 1 
1! 2!
( s  1) s...(s  k  2) k
 ...   f n 1  (4)
k!
k
0 ( s  1) s...(s  j  2) j
  f n 1   j!
 f n 1 .
j 1

Підставляючи цей многочлен у формулу (1) замість f (t , u ) та зробивши заміну s  ( t  tn )  ,


одержимо неявний метод:
k
yn 1  yn    *j j fn1, (5)
j 0

де коефіцієнти *j визначаються за формулами


1
1
*0  1, *j  ( s  1) s...(s  j  2) ds, j  1, k .
j!
0

Наведемо приклади формул (5). При k  0, *0  1 будемо мати неявний метод Ейлера
yn 1  yn  f n 1,
при k  1, 1*  1 2 правило трапецій
1 1 
y n 1  yn   f n 1  f n .
2 2 
Насправді ці два методи — однокрокові. При k  2, 3, *2  1 12 , 3  1 24 одержимо відповідно
такі методи
 5 8 1 
y n 1  yn   f n 1  fn  f n 1 ,
 12 12 12 
 9 19 5 1 
y n 1  yn   f n 1  fn  f n 1  f n  2 .
 24 24 24 24 

2
Формули (5) визначають yn 1 неявно (на кожному кроці для обчислення yn 1 необхідно
розв’язати нелінійне рівняння), а тому вони називаються неявними методами Адамса.
Неявні формули Адамса мають загальний вигляд:
k
yn 1  yn    j fn j 1 . (6)
j 0
5.2. Формули диференціювання назад. Багатокрокові формули Адамса основані на
чисельному інтегруванні, тобто інтеграл в (1) апроксимується деякою квадратурною формулою.
Тепер розглянемо багатокрокові методи, які грунтуються на чисельному диференціюванні.
Припустимо, що відомі значення yn  k 1, yn k  2 ,..., yn розв’язку диференціального рівняння
(1) §2 . Щоб вивести формулу для yn 1 , використаємо інтерполяційний многочлен Q (t ) , який
проходить через точки {( x j , y j ) | j  n  k  1, n  1}. Як і многочлен (4) , його можна виразити через
різниці назад, а саме
s 1 ( s  1) s 2
Q (t )  Q (t n  s)   0 y n 1  y n 1   y n 1 
1! 2!
( s  1) s...(s  k  2) k
 ...   y n 1 (7)
k!
k
( s  1) s...(s  j  2) j
  0 y n 1    y n 1 .
j 1
j!

Визначимо тепер невідоме значення yn 1 так, щоб многочлен Q (t ) задовольняв диференціальне


рівняння хоча б в одному вузлі сітки, тобто
Q( tn 1 r )  f (tn 1 r , yn 1 r ).
Враховуючи , що s  ( t  tn )  , продиференціюємо (7) по змінній t

1 k d  ( s  1) s...( s  j  2)  j
Q ( t )   
 j 1 ds  j!
 yn 1.

Для r  1 одержимо явні формули
k
  j  j yn 1  fn ,
j 1
де
d  ( s  1) s...( s  j  2)  1
1  1,  j     , j2.
ds  j!  s 0 j( j  1)
При k  1 будемо мати явний метод Ейлера, а при k  2 правило середньої точки
1 1
yn 1  yn 1  f n .
2 2
У випадку k  3 формула має вигляд
1 1 1
yn 1  yn  yn 1  yn  2  f n .
3 2 6

3
Однак вона нестійка, як і всі решта формул при k  3 (див. п. 5.4), а тому непридатна для
розрахунків.
Кращі властивості мають формули, які одержуються з (7) при r  0 . Це неявні формули
k
 *j  j yn 1  fn 1 (8)
j 1
з коефіцієнтами
d  ( s  1) s...(s  j  2) 
*j   ,
ds  j!  s 1
які після диференціювання набувають вигляду
1
*j  при j  1 .
j
Тому (8) зводиться до формули
k
1
 j  j yn 1  f n1 .
j 1
Такі багатокрокові методи називають формулами диференціювання назад. Вони вперше були
виведені Кертісом і Хіршфельдером.
Наведемо приклади цих формул, виразивши різниці назад через yn i
y n1  y n  f n1 , k  1,
3 1
y n1  2 y n  y n1  f n1 , k  2,
2 2
11 3 1
y n1  3 y n  y n1  y n 2  f n1 , k  3,
6 2 3
25 4 1
y n1  4 y n 3 y n 1  y n 2  y n 3  f n 1 , k  4,
12 3 4
137 10 5 1
y n 1  5 y n 5 y n 1  y n 2  y n3  y n 4  f n1 , k  5.
60 3 4 5
Формули диференціювання назад мають вигляд:
k
  j yn j 1  fn 1 .
j 0

4
У загальному випадку явні s –ступеневі методи Рунге–Кутта мають вигляд:
k1  f tn , yn ,
k 2  f tn  c2 , yn  a21k1 ,
k3  f tn  c3, yn  a31k1  a32k 2 ,

k s  f tn  cs , yn  as1k1    a s , s 1k s 1 ,
yn 1  yn  b1k1  b2k2    bs ks ,
де ci , aij , i  2, s, j  1, s  1, bi , i  1, s — дійсні коефіцієнти. Компактне зображення методу Рунге–
Кутта дає таблиця:
0
c2 a21
c3 a31 a32
... ... ... ...
cs a s1 as 2 ... a s, s 1
b1 b2 ... bs 1 bs .
Переважно коефіцієнти ci задовольняють такі умови
c2  a21, c3  a31  a32 , , cs  as1  as 2    as , s 1, (6)
зміст яких полягає в тому, що всі точки, в яких обчислюється f , є наближеннями першого
порядку до розв'язків utn  ci  , i  1, s. Ці умови значно спрощують вивід методів Рунге–Кутта
високого порядку.
Коефіцієнти ci , aij , bi вибираються з міркувань точності. Локальна похибка s –ступеневого
методу Рунге–Кутта дорівнює
ln 1  yn 1  un 1  un  b1k1  b2k2    bs ks  un 1, (7)
де
k1  f tn , un ,
ki  f tn  ci , un  ai1k1  ai 2k 2    ai ,i 1ki 1 , i  2, s.
Зазначимо, що
 u u 
ln 1    n 1 n  b1k1  b2 k2    bs k s    n ,
  
де  n — похибка апроксимації або нев'язка методу.
Зупинимося детальніше на окремих методах. При s  1 одержимо схему Ейлера, а при
s  2 — множину методів:
k1  f t n , y n , k 2  f t n  c 2 , y n  a 21k1 ,
y n1  y n  b1k1  b2 k 2 .
Дослідимо локальну похибку двоступеневого методу залежно від вибору параметрів,
припускаючи достатню гладкість розв'язку ut  і функції f t , u  . Для цього розкладемо всі
величини, які входять до виразу локальної похибки (7), за формулою Тейлора в околі точки tn .
Запишемо спочатку розклад за степенями  значення un 1
2 3
un  un  O 4 .
un 1  un  un 
2 6
 
Використовуючи співвідношення (4) з §2, одержимо
2
un 1  un  f   ft  f  fu  
2
(8)
3

6
   
f tt  2 f  f tu  f 2 f uu  f u  f t  f  f u   O 4 .

Тут значення функції f t , u  та її частинних похідних беруться при t  tn , u  un .


Розкладемо тепер k2 як функцію  за формулою Тейлора
dk2 ( 0)  2 d 2k 2 (0)
k 2 ( )  k 2 (0)    2
 O ( 3 ) ,
d 2 d
Знайдемо похідні
dk 2 ( ) f ( t , u ) f (t , u )
 c2  k1a 21 , t  t n  c 2 , u  u n  a21k1 ,
d t u
d 2 k 2 ( )
 2 f (t , u ) 2  2 f ( t, u )  2 f (t , u ) 2 2
 c2  2 c2 a21k1  a 21k1 .
d 2 t 2 tu u 2
Враховуючи, що k1  f tn , un , a 21  c2 , одержимо
dk 2 (0) d 2k2 ( 0)
 c2 ( f t  ff u ), 2
 c22 ( f tt  2 ff tu  f 2 f uu ) .
d d
Тоді
2 2
k 2  f  c2  f t  f  f u  
2
   
c2 f tt  2 f  f tu  f 2 f uu  O 3 , (9)

і
 1
ln 1  b1  b2  1 f   2  b2 c2   f t  f  f u  
 2
1  1
 1
 
 3   b2c22   ftt  2 f  ftu  f 2 fuu  fu  f t  f  fu   O 4 .  
2  3 6 
Прирівнюючи до нуля коефіцієнти при  і 2 , одержимо систему рівнянь, яку повинні
задовольняти коефіцієнти двоступеневого методу для того, щоб цей метод мав другий порядок
апроксимації
1
b1  b2  1, b2 c2  , a21  c2 .
2
Зокрема, при b1  0, b2  1, c2  a21  1 2 будемо мати метод другого порядку (4), (5).
Оскільки головний член (перший ненульовий член) тейлорівського розкладу локальної похибки
1 
2 
1
3
 1
 
ln 1  3   b2c22   f tt  2 f  f tu  f 2 f uu  f u  f t  f  f u   O  4 ,
6 
(10)  
то звідси випливає, що двоступеневого методу третього порядку апроксимації не існує.
Щоб побудувати триступеневу схему третього порядку апроксимації, необхідно розкласти
функції, які входять до (7) за формулою Тейлора до величин порядку 3 включно. Аналогічно до
k2 , розкладемо k3 за степенями  :
dk3 (0) 2 d 2k3 ( 0)
k3 ( )  k3 (0)     O ( 3 ) .
d 2 d 2
Обчислимо
dk 3 ( ) f (t , u ) f (t , u )  dk 
 c3   a31k1  a32 k 2  a32 2 , t  t n  c 3 , u  u n  a31k1  a32k 2 ,
d t u  d 
d 2 k 3 ( )
 2 f (t , u ) 2  2 f (t , u )  dk 
 c3  2 c3  a 31k1  a32 k 2  a32  2  
2 2 tu  d 
d t
2
 2 f (t , u )  dk  f ( t, u )  dk ( ) d 2 k 2 
  a31k1  a 32 k 2   2   2a32 2  a32  .
u 2  d  u  d d 2 
Звідси на підставі (6) будемо мати
dk3 ( 0) d 2k3 (0)
 c3 ( ft  ffu ), 2
 c32 ( ftt  2 fftu  f 2 f uu )  2a32c2 f u ( f t  ff u ) .
d d
Тоді
k3  f  c3  f t  f  f u  
2 2 (11)
2
  
c3 f tt  2 f  f tu  f 2 fuu  2a32c2 f u  f t  f  f u   O 3 .
  
Враховуючи (8), (9), (11) локальна похибка триступеневого методу буде мати вигляд
 1
ln 1  b1  b2  b3  1 f  2  b2c2  b3c3   f t  f  f u  
 2
1  1

 3   b2c22  b3c32   f tt  2 f  ftu  f 2 f uu   (12)
2  3
 1 
  b3a32c2   f u  f t  f u   O ( 4 ).
 6 
Прирівняємо до нуля коефіцієнти при , 2 , 3 , тоді одержимо умови третього порядку
апроксимації
1 1
b1  b2  b3  1, b2c2  b3c3  , b2c22  b3c32  ,
2 3
1
b3a32c2  , c2  a21, c3  a31  a32 .
6
Один з методів, який задовольняє ці умови, має вигляд
0
1 1
2 2
1 1 2
1 4 1
.
6 6 6
У випадку s  3 не існує формул четвертого порядку апроксимації.
При s  4, 5 не можна побудувати формул п'ятого порядку апроксимації. Наведемо таблицю
коефіцієнтів найбільш вживаного чотириступеневого методу четвертого порядку
0
1 1
2 2
1 1
0 (13)
2 2
1 0 0 1
1 2 2 1
.
6 6 6 6
При певних припущеннях щодо гладкості правої частини рівняння (1) §4, подібно до того як
це було зроблено для схеми Ейлера, можна довести що, якщо метод Рунге–Кутта має p –й порядок
апроксимації, то він збіжний з p –м порядком точності (див., напр., [18]).
§3. Метод скінченних різниць
Метод скінченних різниць полягає в заміні диференціальних рівнянь різницевими
(дискретними) рівняннями, які називають різницевою схемою. Для побудови різницевої схеми
множина, на якій розглядається задача, заміняється дискретною множиною точок (сіткою).
Значення функцій, похідних, початкові і граничні умови подають через значення дискретних
(сіткових) функцій у вузлах вибраної сітки, тобто здійснюється заміна диференціального
оператора різницевим, а також будуються різницеві аналоги всіх додаткових умов. Отже, задача
зводиться до розв'язування системи алгебраїчних рівнянь.
Різницеві схеми повинні відображати в просторі сіткових функцій основні властивості
диференціальних рівнянь — такі, як самоспряженість, знаковизначеність оператора, виконання
певних апріорних оцінок тощо. Важливою задачею є одержання різницевих схем із заданою
якістю. Для побудови таких схем використовують ряд методів, про які йтиметься в цьому
параграфі.
3.1. Метод заміни похідних скінченними різницями. Цей спосіб побудови різницевих
схем полягає у тому, що всі похідні, які входять у диференціальне рівняння та крайові умови,
заміняються деякими різницевими відношеннями. Для цього використовують формули чисельного
диференціювання.
Диференціальний оператор L , заданий в класі функцій неперервного аргументу, може бути
наближено замінений (апроксимований) різницевим оператором Lh , заданим на сіткових
функціях. Одним із методів апроксимації є заміна кожної з похідних різницевим відношенням, яке
містить значення сіткової функції в декількох вузлах сітки.
Розглянемо декілька прикладів побудови Lh .
1. Нехай Lu  u( x ), x  [a, b] . Найпростішими різницевими апроксимаціями на рівномірній
сітці h  {xi  a  ih, i  0, N , h  (b  a ) N } є різницеві похідні:
u u
Lh ui  u x ,i  i i 1 — ліва;
h
u u
Lh ui  u x,i  i 1 i — права;
h
u u
L0h ui  u   i 1 i 1 — центральна.
x ,i 2h
Множину вузлів, в яких значення сіткових функцій входять у вираз Lh ui , називають
шаблоном оператора Lh у точці xi . Очевидно, що шаблони операторів Lh , Lh складаються з двох
точок ( xi , xi 1 або xi 1, xi ), а L0h — з трьох ( xi 1, xi , xi 1 ).
Похибкою апроксимації оператора L оператором Lh називається різниця
i  Lhui  Lui .
Кажуть, що Lh має p-й порядок апроксимації в точці xi , якщо
i  Lhui  Lui  O ( h p ).
Використовуючи формулу Тейлора
h2 h3 h 4 IV
ui 1  ui  hui  ui  ui ui  O ( h5 ), (1)
2 6 24
одержимо
h
u x ,i  ui  ui  O ( h 2 ),
2
h
u x,i  ui  ui  O ( h 2 ),
2
h2
u   ui  ui O ( h 3 ) .
x ,i 6
Отже, якщо u  C 2 [a , b] , то ліва і права різницеві похідні апроксимують u з першим
порядком, а якщо u  C 3[a, b] , то центральна різницева похідна — з другим порядком.
2. Lu  u( x ), x  [a , b] . Виберемо триточковий шаблон, який складається з вузлів xi 1, xi , xi 1
, і розглянемо різницевий оператор
1 u  2ui  ui 1
Lh ui  u x x ,i  (u x ,i  u x ,i )  i 1 .
h h2
Користуючись формулою Тейлора (1) для ui 1 , знайдемо
h 2 IV
u x x ,i  ui  ui  O ( h 4 ),
12
тобто, якщо u  C 4 [a , b] , то Lh має другий порядок апроксимації.
3. Нехай ˆ  {x , i  0, N , x  a, x  b} — нерівномірна сітка з кроками h  x  x .
h i 0 N i i i 1
Виберемо триточковий шаблон xi 1, xi , xi 1 і введемо позначення:
1 u u
i  (hi  hi 1 ), u x ,i  i i 1 ,
2 hi
u u u u
u x ,i  i 1 i , u xˆ ,i  i 1 i .
hi 1 i
Оператору Lu  u поставимо у відповідність різницевий:
1  ui 1  ui ui  ui 1 
Lh ui  u xxˆ ,i    .
 i  hi 1 hi 
Похибка апроксимації
h h
i  Lhui  ( Lu)i  i 1 i ui O ( 2i ).
3
Звідси маємо:
i C (  )  max  i  O ( h ), h  max hi
h 1 i  N 1 1 i  N
оператор Lh має перший порядок апроксимації у сітковій нормі C ( h ) .
Розглянемо приклад крайової задачі
u  q( x )u   f ( x ), a  x  b, (2)
u( a )  1, u (b)   2 , (3)
де 1, 2 — задані числа. Для чисельного розв’язування (2), (3) введемо на відрізку [a, b]
рівномірну сітку h  {xi  a  ih, i  0, N , h  (b  a ) N } і замінимо u( xi ) другою різницевою
похідною u x x ,i . Тоді замість диференціального рівняння одержимо різницеве рівняння
yi 1  2 yi  yi 1
 qi yi   fi , i  1, N  1, (4)
h2
де qi  q( xi ), fi  f ( xi ) . Граничні умови замінимо співвідношеннями
y0  1, y N   2 . (5)
Розв’язуючи задачі (2), (3) різницевим методом необхідно знати, з якою точністю розв’язок
різницевої задачі наближає розв’язок вихідної задачі.
Величина zi  yi  ui буде похибкою наближеного розв’язку yi . Підставимо yi  zi  ui в
(4), (5), тоді отримуємо
z x x ,i  qi zi  i , i  1, N  1,
z0  0, z N  0,
де i  u x x ,i  qi ui  fi , i  1, N  1 — похибка апроксимації (нев’язка) різницевого рівняння (4) на
розв’язку u( x ) рівняння (2). Граничні умови (3) задовольняються точно.
Оскільки
h 2 IV
ui  O (h 4 ),
i  u x x ,i  ui 
12
то різницева схема має другий порядок апроксимації.
Нехай при x  a розв’язок рівняння (2) задовольняє граничну умову третього роду
u(a )  1u (a )  1 .
Побудуємо різницеву апроксимацію цієї умови. Для цього замінимо похідну u(a ) першою
різницевою похідною u x ,0  ( u1  u0 ) h . Апроксимація граничної умови буде мати вигляд
y x ,0  1 y0  1 . (6)
Підставимо y0  z0  u0 в (6), тоді
z x ,0  1z0   0 ,
де  0  u x ,0  1u0  1 — похибка апроксимації граничної умови (6). Оскільки

u x,0  u0  0,5hu0  O (h 2 ), (7)


то
 0  u( a )  1u( a )  1  0,5hu( a )  O ( h 2 )  0,5hu(a )  O (h 2 ) .
Звідси видно, що  0  O ( h) , тобто гранична умова (6) має перший порядок апроксимації.
Замінимо граничну умову різницевою так, щоб порядок апроксимації був O (h 2 ) . Оскільки
u( x ) — розв’язок диференціального рівняння (2), то u( a )  q( a )u( a )  f (a ) і з (7) одержимо
u x,0  0,5h( q0u0  f 0 )  u0  O ( h 2 ), (8)
тобто вираз у лівій частині (8) апроксимує похідну в точці x  a з другим порядком апроксимації.
Звідси випливає, що гранична умова
y x ,0  0,5h( q0 y0  f 0 )  1 y0  1
має другий порядок апроксимації.
Аналогічно можна показати, що різницеве рівняння
y x , N  0,5h ( qN y N  f N )   2 y N   2 (9)
апроксимує з другим порядком граничну умову
u(b)  2u(b)   2 .
Приклад 1. Методом заміни похідних скінченними різницями для крайової задачі
(1  x 2 )u  2 xu  u  x 2 , 0  x  1, (10)
u(0)  1, u(1)  0 (11)
побудувати різницеву схему другого порядку апроксимації.
Розв’язування. Введемо сітку h  {xi  ih, i  0, N , h  1 N } . Замінимо другу похідну
u( xi ) другою різницевою похідною u xx,i , а першу похідну u( xi ) центральною різницевою
похідною u  , тоді будемо мати
x ,i

(1  xi2 ) y x x,i  2 xi y   yi  xi2 , i  1, N  1 . (12)


x ,i

Для апроксимації u( 0) з другим порядком використаємо рівність (7) та диференціальне рівняння в
точці x0  0 : u0  u0  0 , тоді отримаємо

u x,0  0,5hu0  u0  O ( h 2 ) .

Отже, різницеві крайові умови будуть мати вигляд

y x ,0  0,5hy0  1, yN  0 . (13)
Покажемо, що різницева схема (112), (113) має другий порядок апроксимації. Справді,
 i  (1  xi2 )u x x ,i  2 xi u   ui  xi2 
x ,i

 (1  xi2 )ui  2 xi ui  ui  xi2  O (h 2 )  O ( h 2 ), i  1, N  1,


 0  u x ,0  0,5hu0  1  u0  0,5h( u0  u0 )  1  O ( h 2 )  O ( h 2 ) .
6.2. Абсолютна стійкість чисельних методів. Для дослідження стійкості чисельних
методів інтегрування жорстких систем диференціальних рівнянь, розглянемо лінійну систему зі
сталими коефіцієнтами
u  Au . (6)
Застосовуючи лінійний багатокроковий метод (1) до системи (6), одержимо
k k
  j y n  j 1    j Ay n j 1 . (7)
j 0 j 0
Припустимо, що матриця A має N різних власних значень 1,  2 ,..., N , тоді існує невироджена
матриця H така, що H 1 AH   , де  — діагональна матриця з елементами 1,  2 ,..., N . Якщо
покласти u  Hv і помножити систему (6) зліва на H 1 , то одержимо
v   H 1 AHv
або
   m vm , m  1, N .
vm (8)
Зробимо аналогічну заміну в (7), тоді
k k
  j vm,n  j 1    j  mvm,n  j 1  0 . (9)
j 0 j 0
Співвдношення (9) збігається зі скінченно–різницевою апроксимацією лінійним багатокроковим
методом (1) рівнянь (8). Аналогічні висновки можна зробити відносно методів Рунге–Кутта. Отже,
стійкість чисельних методів будемо досліджувати на скалярному модельному рівнянні
u  u, (10)
де  — комплексне число, оскільки власні значення матриці A , взагалі кажучи, комплексні числа.
Багатокроковий метод, застосований до модельного рівняння (10), має вигляд
k
 ( j  z j ) yn  j 1  0,
j 0

де z   — комплексний параметр. Якщо розв’язок цього рівняння шукати у вигляді yn  q n , то


одержимо характеристичне рівняння
k
 (  j  z j ) q k  j  0 . (11)
j 0
Зауважимо, що якщо однокроковий метод застосовувати до модельного рівняння (10), то
yn 1  R ( z ) yn , де R(z ) називається функцією стійкості однокрокового методу. Характеристичне
рівняння для однокрокового методу має вигляд q  R (z ) .
Чисельний метод називається абсолютно стійким (стійким при будь–яких   0 ) для z   ,
якщо для цього z   корені характеристичного рівняння (11) задовольняють кореневу умову,
тобто всі корені за модулем не більші за одиницю, а серед коренів модуль яких рівний одиниці
немає кратних. Областю абсолютної стійкості називається множина всіх точок комплексної
площини z   , для яких даний метод є абсолютно стійким.
Однокроковий метод буде абсолютно стійким, якщо R ( z )  1 .
Метод називається A –стійким, якщо його область абсолютної стійкості включає всю
півплощину Re z  0 . Суть наведеного означення полягає в тому, що A –стійкий чисельний метод
є абсолютно стійким, якщо стійким є розв’язок вихідного диференціального рівняння.
Явний метод Ейлера, застосований до модельного рівняння (10), має вигляд
yn 1  (1  z ) yn .
Вимога абсолютної стійкості приводить до оцінки
1 z 1
або
(1  1 )2  22  1,
де 1  Re z, 2  Im z . Область абсолютної стійкості в цьому випадку буде всередині круга
одиничного радіуса з центром у точці (1,0) .
Для неявного методу Ейлера
yn 1  yn  f ( tn 1, yn 1 )
область абсолютної стійкості — зовні круга одиничного рідіуса з центром в точці (1,0) .
Отже, неявний метод Ейлера є A –стійкий, а явний — не A –стійкий.
Розглянемо формулу трапецій

y n 1  yn  ( f (tn 1 , yn 1 )  f (tn , yn )) .
2
Для рівняння (10) цей метод має вигляд
1 z 2
y n 1  R( z ) yn , R( z )  .
1 z 2
Звідси випливає, що R ( z )  1 тоді і тільки тоді, коли Re z  0 . Отже, формула трапецій теж A –
стійка.
Для знаходження області стійкості лінійного багатокрокового методу виразимо з рівняння
(11) параметр z через змінну q , тоді дістанемо
k
  j qk  j
j 0
z( q)  k . (12)
 jqk  j
j 0

Покладемо q у рівнянні (12) таким, що приймає всі значення на одиничному колі q  1 і


обчислимо відповідні значення z (q) . Оскільки будь–яке q на одиничному колі можна записати у
вигляді q  ei , i   1, 0    2  , то ei можна підставити замість q у рівняння (12), що приведе
до
k
  j ei ( k  j ) 
j 0
z( q)  k . (13)
i (k  j )
 j e
j 0

Множина точок, породжених (13), є геометричним місцем точок  , для яких q  1 . Оскільки коло
є замкненою кривою, то  також замкнена. Геометричне місце точок  є симетричним відносно
осі Re z , тому достатньо обчислити z (q) тільки для 0     .
При розв’язуванні жорстких систем диференціальних рівнянь було б бажано
використовувати саме A –стійкі методи, тому що умови їх стійкості не накладають обмежень на
крок  . Однак серед явних методів (Рунге–Кутта, багатокрокових) не існує A –стійких.
Дальквіст довів, що не існує A –стійкого неявного лінійного багатокрокового методу
порядку апроксимації вище другого.
У зв’язку з цим було введено ще одне означення стійкості.
Чисельний метод називається A() –стійким, якщо область його стійкості містить кут
arg(  z )   (рис.1).

Зокрема, A( 2) –стійкість збігається з A –стійкістю.


Доведено, що ні для якого  не існує явного A() –стійкого методу.
Найбільш поширеним класом методів розв’язування жорстких задач є формули
диференціювання назад, області стійкості яких зображені на рис.2 (області стійкості розташовані
зовні відповідних кривих  ).
Формули диференціювання назад від 1–го до 6–го порядків апроксимації — A() –стійкі,
причому чим більший порядок, тим менше  .
Приклад 1. При яких значеннях параметра   0 чисельний метод
yn 1  yn  (f (tn 1, yn 1 )  (1  ) f ( tn , yn ))
буде A –стійким?
Розв’язування. Застосуємо цей метод до модельного рівняння (10), тоді одержимо
yn 1  R( z ) yn ,

де функція стійкості

1  (1   ) z
R( z )  , z  
1  z
є аналітичною функцією в лівій півплощині комплексної площини z . Згідно з теоремою про
максимум модуля аналітичної функції, максимум R (z ) досягається на границі області, тобто на
уявній осі Im z . Отже, умова A –стійкості R ( z )  1  Re z  0 буде виконуватися, якщо

R (i)  1   R1 . Остання умова для заданої функції R(z ) буде мати вигляд

1  i(1  ))  1  i . Звідси 2 (1  2)  0 . Отже, чисельний метод A –стійкий за умови   1 2 .

§7. Реалізація лінійних неявних багатокрокових методів


Для обчислення y n 1 за формулою (1) §6 необхідно розв’язати систему N нелінійних
алгебраїчних рівнянь з N невідомими вигляду

y n 1  0 f (tn 1, y n 1 )  φ n , (1)
0
де
1 k  k
φn   
0 j 1
 j y n  j 1  
0 j 1
 j f n  j 1.
У найпростішому випадку для розв’язування системи (1) можна використати метод простої
ітерації

y (ns11)  0 f (t n  1 , y (ns)1 )  φ n , s  0, M  1, (2)
0
де y (n0)1 — задане початкове наближення до y n 1 , для обчислення якого можна використати явні
багатокрокові методи, s — номер ітерації. Цей ітераційний процес ефективний тільки у випадку
нежорстких задач. Для жорстких задач він збіжний при  менших, ніж найменша часова
константа системи диференціальних рівнянь.
У випадку жорсткої задачі систему (1) розв’язують за допомогою методу Ньютона.
Запишемо (1) у вигляді

F( y )  y n 1  0 f ( t n 1 , y )  φ n  0 .
0
Тоді ітераційний метод Ньютона буде мати вигляд
1
 F( y ( s ) ) 
y (ns11)  (s)
y n 1   n 1 
F( y (ns)1 )
 y 
або
  
 I  0 J (tn 1 , y (ns)1 )  z (ns)1  F( y (ns)1 ),
 0 
y (ns11)  y (ns)1  z (ns)1,
де I — одинична матриця порядку N , J  f u — матриця Якобі правої частини системи,
s  0, M  1 . Обчислення y (ns11) за цією формулою вимагає значних затрат, пов’язаних з
необхідністю обчислення матриці Якобі, і розв’язанням системи N лінійних алгебраїчних рівнянь
з N невідомими для кожного s .
Ці затрати можуть бути зменшені за рахунок застосування модифікованого методу Ньютона
і за рахунок врахування структури матриці Якобі. Для обчислення y (ns11) з допомогою
модифікованого методу Ньютона необхідно розв’язати систему лінійних алгебраїчних рівнянь
  
 I  0 J (tn 1, y (n0)1 )  z (ns)1  F( y (ns)1 ),
 0 
y (ns11)  y (ns)1  z (ns)1, s  0, M  1.
Щоб розв’язати M таких систем лінійних рівнянь методом Гаусса необхідно один раз розкласти
матрицю

P  I  0 J (tn 1, y (n0)1 )
0
у вигляді P  LU ( L — ліва трикутна матриця, U — права трикутна матриця), що відповідає
прямому ходу методу Гаусса і розв’язати 2 M систем з трикутними матрицями, що відповідає
оберненому ходу методу Гаусса. Матрицю Якобі J (tn 1, y (n0)1 ) можна обчислювати як чисельно,
так і аналітично. Величину M часто вибирають рівною 3.
Ефективна програма чисельного інтегрування повинна передбачати зміну величини кроку.
Однак у випадку багатокрових методів процедура зміни кроку викликає ускладнення, оскільки ці
методи вимагають значень чисельного розв’язку в точках, які розташовані на однаковій віддалі.
Існують дві можливості виходу з цього:
1) визначення з допомогою інтерполяції многочленами значень у точках, які необхідні при
зміні кроку;
2) побудова багатокрокових методів для нерівномірної сітки (див., напр., [23]).
Розглянемо детальніше перший підхід. Лінійні багатокрокові методи можна
використовувати у формі з розділеними різницями (див. п. 5.1, 5.2) або з допомогою зображення
T
  2 k 
Нордсіка Z n   y n , y n , y n ,..., y (nk )  , кожна компонента y (n j ) якого апроксимує
 1! 2! k! 
 
відповідну похідну точного розв’язку (див. п. 5.5). При такому способі зберігання інформації
початкове наближення обчислюють за формулою Z n( 0)1  PZ n , де P — трикутна матриця
Паскаля, елементи якої визначаються за формулою
C i , 0  i  j  k ,
Pij   j
0, i  j.
Повний алгоритм прогнозу і корекції при t  tn 1 можна записати у вигляді
Z n(0)1  PZ n ,
  
 I  0 J ( tn 1 , y (n0)1 ) z (ns)1  F( y (ns)1 ),
 0 
y (ns11)  y (ns)1  z (ns)1 , s  0, M  1,
y n 1  y (nM ) (0)
 ( 0)
1 , Z n 1  Z n 1  l  ( f (t n 1 , y n 1 )  y n 1 ),
де матриця-рядок l  (li ) ik 0 визначає багатокроковий метод (1) §6, ab 
 ( a0 b1, a0b2 ,..., a0bN , a1b1 ,..., a1bN ,..., a k b1 ,..., a k bN )T , a  ( a1 , a 2 ,..., a k ) T , b  (b1 , b2 ,..., bN ) T . Дові-
льна зміна кроку у векторі Нордсіка досягається множенням i -го коефіцієнта на i , причому
   H  , де  H — новий крок , тобто Z n 1 змінюється так: Z n 1  Z n 1 diag(1, , 2 ,..., k ) .
Однак, у цьому випадку при зміні порядку необхідно обчислити новий вектор Нордсіка. У формі з
розділеними різницями зручніше змінювати порядок методу, але важче змінювати крок.
При застосуванні лінійних багатокрокових методів важливим є питання контролю похибки,
вибору кроку чисельного інтегрування, порядку методу, який є найбільш точним і ефективним у
даній точці tn 1 .
Головний член локальної похибки лінійного багатокрокового методу порядку апроксимації
p має вигляд

l [np]1  C p  p 1u ( p 1) (tn )  (  p  2 ),


де C p — константа, яка залежить від порядку p .
Припустимо, що до точки tn чисельне інтегрування проходило успішно, а для знаходження
y n 1 ми вибрали крок  і порядок p . Щоб вирішити, чи придатне y n 1 , необхідно оцінити
локальну похибку. Для практичної оцінки локальної похибки методу порядку p можна
використати, наприклад, формулу
l[np]1  y n 1  y *n 1 , (3)

де y*n 1 — розв'язок, одержаний методом порядку p  1 . На основі формули (3) обчислюється


похибка
l[np]1
, Ep 
d
де d — маштабний множник. Для обчислення абсолютної похибки d  1 , а для відносної
d  y*n 1 . Можна використати змішане маштабування (див. §4).

Далі необхідно вибрати новий крок і порядок. Ідея вибору кроку полягає в знаходженні
найбільшого  H , при якому похибка E p не перевищує  . Похибку E p в точці tn  2 можна
наблизити її значенням в точці tn 1 , тоді крок  H   вибирається з умови
p 1 ( p 1)
C p  1 H u ( tn )
  p 1E p   .
d
Звідси
1 1
   p 1 1    p 1
  , [Hp ]  .
 Ep  1,2  E p 
 
1
Коефіцієнт дозволяє врахувати вплив величини O (  p  2 ) . Для вибору оптимального порядку
1,2
вибирають кроки
1 1
1    p  2 1    p
[Hp 1]  , [Hp 1]  ,
1,4  E p 1  1,3  E p 1 
де
l[np11] l[np11]
E p 1  , E p 1  .
d d
Тоді новий крок  H  max( [Hp ] , [Hp 1] , [Hp 1] ) , а порядок pH  q , де  H  [Hq ] , q  p  1, p, p  1 .
Необхідно зазначити, що в кожній з реалізацій багатокрокових методів описаний алгоритм,
удосконалений і доповнений ще рядом процедур. Наприклад, крок зберігається сталим, якщо
відношення  H  близьке до 1 , що спрощує обчислення.
5.5. Методи Нордсіка. Усі лінійні багатокрокові методи чисельного інтегрування
еквівалентні знаходженню многочлена, який апроксимує розв’язок u(t ) . Ідея методів Нордсіка
полягає у тому, щоб зобразити цей многочлен через похідні від нульового до k –го порядку
включно, тобто з допомогою вектора
T
 2 k 
z n   y n , y n , y n ,..., y n( k ) 
 2! k! 
 
величини y n( j ) мають зміст наближених зачень un( j ) .
Щоб визначити процедуру чисельного інтегрування, необхідно задати правило знаходження
z n 1 за відомим z n і диференціальним рівнянням (1) §2. При використанні розкладу в ряд
Тейлора (наприклад, при k  3 ) таке правило має вигляд
2 3
y n 1  yn  yn  yn  yn, (18)
2! 3!
2 3
yn 1  yn  2 yn  3 yn,
2! 3!
2 2 3
yn 1  yn  3 y n,
2! 2! 3!
3 3
y n1  yn.
3! 3!
У загальному випадку прогнозоване значення
z (n0)1  Pz n , (19)
де P — трикутна матриця Паскаля, елементи якої визначаються формулою
C i , 0  i  j  k ,
Pij   j
0, i  j.
Оскільки ця апроксимація не використовує рівняння (1) §2, то рівність yn 1  f (tn 1, yn 1 )

, взагалі кажучи, не буде виконуватися, тому коректуємо z (n0)1 , додаючи до нього величину,
кратну f (tn 1, yn 1 )  yn 1 , і будемо вимагати, щоб виконувалася рівність

z n 1  z (n0)1  l( f (tn 1 , y n 1 )  y n 1 ), (20)

де l  (l0 , l1 ,..., lk ) T . Друга компонента вектора l повинна бути рівна 1 (l1  1) , щоб виконувалася
умова
yn 1  f (tn 1, yn 1 ).
Співвідношення (19) і (20) можуть бути об’єднані в одну формулу
z n 1  Pz n  l( f ( tn 1 , y n 1 )  e1T Pz n ), (21)
де e1  0, 1, 0,..., 0T . Процедуру (21) називають процедурою Нордсіка.
Дослідимо метод Нордсіка на стійкість. Для цього підставимо в (21) f ( t, u )  0 , тоді
одержимо
z n 1  Mz n , M  P  le1T P.
Наприклад, при k  3 ця матриця має вигляд
 1 1  l0 1  2l0 1  3l0 
 
0 0 0 0 
M  .
0  l2 1  2l2 3  3l2 
 
0  l  2l3 1  3l3 
 3
Для стійкості методу необхідно, щоб всі власні числа матриці M задовольняли кореневу умову.
Зауважимо, що 1 і 0 є власними значеннями матриці M , а її характеристичний многочлен не
залежить від l0 . Величини l2 , l3 ,...,lk зручно вибрати таким чином, щоб всі решта власні значення
M були рівні нулю. У випадку k  3 це виконується при l2  3 4 , l3  1 6 . Коефіцієнт l0 можна
вибрати з умови перетворення в нуль константи похибки методу. У нашому випадку l0  3 8 , а
весь метод задається вектором
T
3 3 1
l   , 1, ,  .
8 4 6
Зазначимо, що цей метод еквівалентний трикроковому методу Адамса. Дійсно, запишемо
розклад (18) для точки tn 1
2 3
y n 1  yn  yn  yn  yn,
2! 3!
тоді
2
y n 1  yn  yn  yn,
2!
2
y n  2  yn  2yn  4 yn.
2!
Розв’яжемо цю систему рівнянь відносно yn , yn , тоді будемо мати
2 3 1 
yn   yn  yn 1  yn  2 ,
2! 4 4 
(22)
3 1 2 1 
yn   yn  yn 1  yn  2 .
3! 6 6 6 
З рівності (21) для першої компоненти вектора Нордсіка отримаємо
5 1 1 3
y n 1  yn  yn  2 y n  3 yn  f n 1.
8 8 48 8
Підставивши (22) в останню рівність, одержимо трикроковий неявний метод Адамса.

yn 1  yn  ( 9 f (tn 1, yn 1 )  19 f (tn , y n ) 
24
 5 f ( tn 1, yn 1 )  f (tn  2 , yn  2 )).
Можна показати, що метод Нордсіка еквівалентний деякій багатокроковій формулі порядку
не нижче k . З допомогою вектора Нордсіка зручно змінювати крок чисельного інтегрування .
§6. Чисельне інтегрування жорстких систем
звичайних диференціальних рівнянь
Чисельні методи розв’язання задачі Коші для звичайних диференціальних рівнянь
покоординатно без будь–яких змін переносяться на системи звичайних диференціальних рівнянь.
Наприклад, лінійні багатокрокові методи у випадку систем рівнянь можна записати у
вигляді
k k
  j y n  j 1    j fn  j 1 , (1)
j 0 j 0

де y n , fn — вектори наближень до розв’язку u  ( u1, u2 ,..., uN )T і правої частини


f  ( f1, f 2 ,..., f N )T системи диференціальних рівнянь у відповідних точках. Однак при чисельному
розв’язанні систем звичайних диференціальних рівнянь можуть виникнути додаткові труднощі,
пов’язані з жорсткістю системи.
6.1. Поняття жорсткої задачі. Суть явища жорсткості полягає в тому, що розв’язок, який
потрібно обчислити, змінюється повільно, однак існують швидкі згасаючі збурення. Наявність
таких збурень перешкоджає знаходженню чисельного розв’язку, який повільно змінюється.
Розглянемо приклад жорсткої задачі
u  ( u  e t )  e t , u (0)  0, t  [0, T ],   0,
точний розв’язок якої має вигляд
u ( t )  e  t  e t .
Цей розв’язок складається з двох компонент, одна з яких et змінюється значно швидше (оскільки
  0 , наприклад   103 ), ніж друга e  t . Після дуже малого відрізка часу [0, ] , де   1  —
найменша часова константа, швидка (жорстка) компонента прямує до нуля і суттєвий вклад у
розв’язок робить повільна (гладка) компонента.
Для виявлення деяких особливостей чисельних методів застосуємо до цієї задачі явний та
неявний методи Ейлера:
yn 1  yn  f (tn , yn ),
yn 1  yn  f (tn 1, yn 1 ).
Тоді для явного методу Ейлера будемо мати
y n 1  (1   )( y n  e t n )  e t n  e tn ,
а для неявного
y n 1  (1  ) 1( yn  e t n ) 
 (1  ) 1( e  tn  e t n1  e tn 1 ).
Одержані чисельні розв’язки порівняємо з точним
un 1  e tn 1  e tn 1  e ( un  e tn )  e tn 1 .
Вираз e  (un  e t n ) можна інтерпретувати як збурення повільного розв’язку e  t в момент
t  tn 1 . Це збурення швидко спадає завдяки e  , де   0 , тобто un 1  e tn 1 при    .
Чисельний метод повинен бути в змозі подавляти різницю yn  e t n для значень   0 . Різниця
yn  e t n у випадку неявного методу Ейлера швидко спадає і для будь–якого фіксованого
  0, yn 1  e tn 1 при    . Для явного методу різниця yn  e t n буде зменшуватися тільки
у випадку 1    1 , тобто при    2  . Ця умова накладає сильне обмеження на величину кроку

 при   0 . З іншого боку, якщо y n  e t n , то e  tn 1 апроксимується виразом e  t n  e  tn


досить точно для значно більших  , ніж ті, що задовольняють умову    2  . Отже, величина
кроку обмежується чисельною стійкістю, а не точністю.
Для лінійних систем диференціальних рівнянь зі сталими коефіцієнтами подібні компоненти
розв’язку, які сильно відрізняються, виникають, коли матриця системи містить сильно розкидані
власні значення. Розглянемо, наприклад, систему
u1  998u1  1998u2

u2  999u1  1999u2
з початковими умовами u1( 0)  u2 (0)  1 . Власні значення матриці коефіцієнтів цієї системи
 998 1998 
 
  999  1999 
дорівнюють: 1  1,  2  103 . Тоді розв’язок буде мати вигляд
3
u1  4e  t  3e 10 t ,
3
u2  2e  t  3e 10 t ,
3
де e 10 t — швидка компонента розв’язку, а e  t — повільна.
Розглянемо систему нелінійних звичайних диференціальних рівнянь (2) §1. Нехай u(t ) i
v (t ) — два різні розв’язки системи. Утворимо різницю z(t )  u(t )  v(t ) , яка задовольняє рівняння
  f m (t , v  z )  f m ( t, v ), m  1, N .
zm (2)
Проведемо розклад правої частини (2) за формулою Тейлора. Оскільки
f m (t , u)  f m (t , u1, u2 ,..., uN ),
то маємо
N
f m (t , v)
f m ( t , v  z )  f m (t , v )   z j (t )  o  z .
j 1
u j

У результаті розкладу система (2) набуває вигляду


z  J (t , v(t )) z( t )  o z , (3)
де через J ( t, v(t ))  f (t, v( t )) u позначено матрицю Якобі з елементами
f i (t, v (t ))
J ij ( t, v( t ))  , i, j  1, N .
u j

Знехтувавши в (3) величиною o z  , одержимо так звану систему рівнянь першого наближення
w   J (t , v(t )) w ,
яка є системою лінійних диференціальних рівнянь відносно w (t ) , оскільки функція v (t ) задана.
~ ~
Припустимо, що в околі точки ( t , v ( t )) матриця J (t, v (t )) змінюється достатньо мало, тоді
одержимо систему диференціальних рівнянь зі сталими коефіцієнтами
~ ~ ~
w   J ( t , v ( t )) w , t  t .
~ ~
Припустимо, що  j , j  1, N — власні числа матриці J ( t , v ( t )) , які в загальному випадку є
комплексними числами. Задача (1.1) називається жорсткою в околі точки t , якщо
~

1) Re  j  0, j  1, N ;
max Re  j
1 j  N
2)  1.
min Re  j
1 j  N
Нехай  — власне число з найбільшою за модулем негативною дійсною частиною, тоді
величина    1 Re( ) буде найменшою часовою константою. Мірою жорсткості задачі є
величина
s  (T  t0 )  , (4)
яка називається коефіцієнтом жорсткості. Якщо s  103 , то система буде сильно жорсткою, якщо
s  10 , тоді система нежорстка.
На практиці жорсткі задачі розпізнають, виходячи з фізичних міркувань. Будь–яка фізична
система, яка моделюється звичайними диференціальними рівняннямии і має фізичні компоненти з
часовими константами, які сильно відрізняються, зводиться до жорсткої задачі. Фізичні
компоненти з найменшими часовими сталими дуже швидко змінюються і роблять задачу
жорсткою, тоді як дослідник проявляє найбільший інтерес до компонент з великими часовими
константами. У жорсткій задачі розв’язки, які змінюються повільно, визначаються саме цими
останніми компонентами. Існуючі методи чисельного розв’язання жорстких задач дозволяють
інтегрування з розмірами кроків такого ж порядку, як і великі часові константи. Класичні явні
методи можуть застосовуватися тільки з розмірами кроків порядку найменших часових констант і
тому є надзвичайно неефективними.
Однією з властивостей жорстких задач є наявність великої константи Ліпшиця
f ( t , u )
L(t )  sup  0. (5)
u u
Якщо вважати, що часовий маштаб задачі зв’язаний з розв’язком, який змінюється повільно на
інтервалі [t0 , T ] , то вираз (5) можна замінити на більш конкретну умову L(t )  1 .
5.3. Порядок апроксимації лінійних багатокрокових методів. Методи Адамса та формули
диференціювання назад є частинними випадками лінійних багатокрокових (різницевих) методів,
які описуються загальною формулою
k k
  j yn  j 1    j fn  j 1, (9)
j 0 j0
де f n  f (tn , yn ),  j ,  j  дійсні числа. Будемо вважати, що виконані такі умови :
0  0,  k   k  0.
Рівняння (9) треба розглядати як рекурентне співвідношення, яке виражає нове значення
yn 1 через знайдені раніше значення yn , yn 1,..., yn  k 1. Для початку розрахунку необхідно задати
k значень y0 , y1,..., yk 1 . Значення y0 визначається вихідною задачею, а саме y0  u0 . Величини
y1, y2 ,..., yk 1 можна обчислити, наприклад, за допомогою методів Рунге–Кутта або
багатокрокових методів нижчого порядку точності (з меншим значенням k ). Надалі будемо
вважати, що початкові значення задані.
Якщо 0  0 , то формула (9) задає явний метод; якщо 0  0 , то — неявний.
Зауважимо, коефіцієнти в (9) визначені з точністю до множника. Щоб ліквідувати цю
довільність, будемо вважати, що виконується умова
k
 j  1, (10)
j 0
яка означає, що права частина різницевого рівняння (9) апроксимує праву частину рівняння (1) §2.
Локальною похибкою багатокрокового методу (9) називається величина ln 1  yn 1  un 1
при точних значеннях y j  u j , j  n  k  1, n. При k  1 це означення збігається з означенням
локальної похибки однокрокових методів.
Похибкою апроксимації або нев’язкою різницевого методу (9) називається функція
1 k
n  
 j 0
[  j un  j 1   j f ( tn  j 1, un  j 1 )], (11)

яка одержується в результаті підставляння точного розв’язку u(t ) диференціальної задачі (1), (2)
§2 в різницеве рівняння (9) та ділення на  .
Лема. Розглянемо диференціальне рівняння (1) §2 з неперервно диференційовною функцією
f (t, u ) і розв’язком u(t ) . Тоді для локальної похибки лінійного багатокрокового методу
виконується рівність
ln 1  (  0  0 f u (tn 1 , un 1  (1  ) y n 1 ) 1  n ,
де 0    1 .
Доведення. З означення локальної похибки

1
k
1
ln 1  yn 1  un 1 
0 j 1

  j un  j 1   j f (tn  j 1, un  j 1 )  
  
 0 f (tn 1, yn 1 )  un 1   n  0  f (tn 1, y n 1 )  f ( tn 1, un 1 ).
0 0 0
За теоремою про скінченні прирости будемо мати
 
l n 1   n  0 f u (t n 1 , un 1  (1  ) y n 1 )l n 1 .
0 0
Звідси випливає твердження леми.
Кажуть, що багатокроковий метод має p –й порядок апроксимації, якщо виконується одна з
умов: n  (  p ) або ln 1  (  p 1 ) . Зауважимо, що згідно з лемою ці умови еквівалентні.
Дослідимо, як впливає вибір коефіцієнтів на похибку апроксимації багатокрокового методу
(9). Розкладаючи функції un  j 1  u(tn 1  j) в точці t  tn 1 за формулою Тейлора, одержимо
p
(  j) s u ( s ) (tn 1 )
un  j 1  u (tn 1  j)    (  p 1 ),
s 0
s!
p 1
(  j) m u ( m 1) (tn 1 )
f (tn  j 1, un  j 1 )  u(tn 1  j)   m!

m 0
p
p (  j) s 1u ( s ) ( tn 1 )
 O(  )    (  p ), j  0, k .
s 1
( s  1)!
Підставляючи ці розклади у вираз для похибки апроксимації (11), будемо мати
k  p p
1 (  j) s u ( s ) (tn 1 ) (  j) s 1 u( s ) (tn 1) 
n     j    j   Ο ( p ) 
 j  0 s! ( s  1 )! 
 s 0 s 1

(  ) s 1 u ( s ) (tn 1 )  
k p k k
1
   j u(tn 1 )      j j s  s  j j s 1   O (  p ).

 j 0 s 1
s!  j 0 j 0

 
Звідси випливає, що похибка апроксимації має p –й порядок, якщо виконуються умови
k k k
  j  0,   j j s  s  j j s 1, s  1, p . (12)
j 0 j 0 j 0
Разом з умовою нормування (10) ми отримали систему p  2 лінійних алгебраїчних рівнянь
відносно 2(k  1) невідомих 0 , 1,...,k ,0 , 1,...,k .
Для того, щоб ця система не була перевизначена, необхідно вимагати, щоб p  2  2(k  1).
Ця вимога означає, що порядок апроксимації лінійних k –крокових методів не може перевищувати
2k . Отже, найвищий досяжний порядок апроксимації неявних k –крокових методів дорівнює 2k ,
а явних — 2k  1 .
Явні методи Адамса дають точний розв’язок тоді, коли f (t , u )  f (t ) є многочленом, степінь
якого менший k . Тоді за допомогою явних методів Адамса одержуємо точні розв’язки
диференціальних рівнянь

2
u   s (tn 1  t ) s 1, u(tn 1 )  0, s  0, k ,
які мають вигляд u(t )  (tn 1  t ) s , s  0, k . Це означає, що похибка апроксимації дорівнює нулю, а
отже враховуючи, що un  j 1  ( j) s , un  j 1   s( j) s 1 , з (11) отримаємо

 k k 
 n    s 1   j j s  s  j j s 1   0, s  0, k .
 
 
 j 0 j 0 
Оскільки ця рівність збігається з рівністю (12) при p  k , то явні методи Адамса мають порядок
не нижче k .
Неявні методи Адамса дають точний розв’язок, якщо f (t , u )  f (t ) є многочленом на
одиницю вищого степеня, ніж для явних, тому вони мають порядок не нижче k  1 .
Аналогічно можна показати, що формули диференціювання назад мають порядок не нижче
k.
Приклад 1. Знайти головний член похибки апроксимації двокрокового методу
yn 1  4 yn  5 yn 1  ( 4 f n  2 f n 1) .
Показати, що метод має третій порядок апроксимації.
Розв’язування. Враховуючи співвідношення
2 3 4
un 1  un  un 
2 6 24
 
un  un  unIV  O 5 ,

f (tn , un )  un ,
2 3
un  unIV  O  4
f (tn 1, un 1 )  un 1  un  un 
2 6
 
похибку апроксимації цього методу розкладемо у ряд Тейлора в околі точки t  tn
u  4un  5un 1
 n   n 1  4 f (tn , un )  2 f (tn 1, un 1 ) 

1 2 3 4  2 3 4 
  5un  un  un  un  unIV  5 un  un  un  un  unIV  
 2 6 24  2 6 24 
  
 2 3  3
 4un  2 un  un  un  unIV   O ( 4 )  6un  2un  2un  unIV 
 2 6  6
 
 3 IV  3 IV
 6u n  2u n   2u n  u n  O( )   u n  O( 4 )  O( 3 ) .
4
3 6

3 IV
Отже, головний член похибки апроксимації має вигляд  un , а метод має третій порядок
6
апроксимації.
5.4. Стійкість багатокрокових методів. Високого порядку апроксимації та малої локальної
похибки ще недостатньо для того, щоб багатокроковий метод був придатний для практичних
розрахунків. Чисельний метод може бути чутливим до малих збурень початкових даних

3
y0 , y1,..., yk 1, тобто бути нестійким. Це означає, що як завгодно малі зміни початкових даних
можуть викликати як завгодно великі зміни розв’язку навіть при   0 і фіксованому n .
Розглянемо явний лінійний двокроковий метод третього порядку апроксимації вигляду
yn 1  4 yn  5 yn 1  ( 4 f n  2 f n 1 ).
Застосуємо його до задачі
u  u, u (0)  1,
тоді будемо мати
yn 1  4(1  ) yn  (5  2 ) yn 1  0. (13)
За початкові візьмемо значення точного розв’зку y0  1, y1  e  .
За аналогією з лінійними диференціальними рівняннями будемо шукати розв’зок рівняння
(13) у вигляді yn  q n , де q — деяка невідома константа. У результаті одержимо характеристичне
рівняння
q 2  4(1  ) q  (5  2 )  0. (14)
Загальний розв’язок різницевого рівняння (13) обчислюється за формулою
y n  c1q1n  c2 q2n , (15)
де q1( )  1    ( 2 ), q2 ( )  5  ( ) — корені рівняння (14), а коефіцієнти c1, c2 визначаються
з початкових умов. Оскільки q1( ) апроксимує e  , перший член в (15) апроксимує значення
точного розв’язку u( t )  e t в точці t  n . Збурення в розв’язок різницевого рівняння вносить
другий член, який називають "паразитним", тому що q2 ( )  1 при   0 . Цей "паразитний"
розв’язок з ростом n стає великим і починає переважати у розв’язку yn .
Звернемося тепер до питання стійкості багатокрокового методу (9). Важливу роль відіграє
поведінка розв’язку при   0 . Очевидно, що (9) при   0 зводиться до формули
0 yn 1  1 yn  ...  k yn  k 1  0 . (16)
Її можна розглядати як чисельний метод (9), застосований до розв’язання диференціального
рівняння
u  0 .
Підставляючи в (16) yn  q n , одержимо характеристичне рівняння
0q k  1q k 1  ...  k  0 . (17)
Багатокроковий метод (9) називається стійким (нуль–стійким), якщо корені
характеристичного рівняння (17) задовольняють кореневу умову, тобто всі корені за модулем не
більші за одиницю, а серед коренів модуль яких дорівнює одиниці немає кратних.
Для явного і неявного методів Адамса характеристичне рівняння (17) має вигляд
q k  q k 1  0 . Крім простого кореня, рівного 1 , характеристичне рівняння має нульовий корінь
кратності k  1 . Отже, методи Адамса — стійкі.
Можна показати, що k –крокова формула диференціювання назад стійка при k 6 і
нестійка при k  7 .

4
Оскільки методи Рунге–Кутта є однокроковими, то для них характеристичне рівняння має
вигляд q  1  0 . Це рівняння має лише один корінь q  1 , а отже, методи Рунге–Кутта — стійкі.
Справджується твердження.
Теорема. Якщо багатокроковий метод (9) стійкий і має p –й порядок апроксимації, то він
збіжний з p –м порядком точності.

5
§4. Практична оцінка похибки та вибір довжини
кроку для методів Рунге–Кутта
Найбільш традиційним способом оцінки локальної похибки є правило Рунге (подвійний
перерахунок, екстраполяція Річардсона), який полягає в повторенні обчислень із зменшеною вдвоє
довжиною кроку і в порівнянні результатів.
Виходячи з точки tn , yn  , методом Рунге–Кутта p –го порядку точності знайдемо
чисельний розв'язок yn 1 в точці tn 1 . Тоді локальна похибка розв'язку yn 1 буде мати вигляд
ln 1  yn 1  un 1  C p 1  O  p  2 ,  
(1)
де C виражається через коефіцієнти методу і частинні похідні правої частини (див. (10) §3),
обчислені в точці (tn , yn  un ) . Припустимо, що в результаті двох кроків, проведених, цим самим

методом, виходячи з цієї ж точки tn , yn  , обчислено yn 21 2 і yn 21 . Похибка розв'язку yn 21
складається з двох частин: з локальної похибки першого кроку, яка має вигляд
 
C (  2) p 1  O  p  2 ,
і локальної похибки другого кроку, яка також виражається формулою (1), але з частинними
похідними, обчисленими в точці tn 1 2  tn   2 , yn 1 2  yn  O   . Отже,

   
y n 21  un 1  C (  2) p 1  C  O  (  2) p 1  O  p  2  2C (  2) p 1  O  p  2 (2)
Якщо від (2) відняти (1), то отримаємо
   
yn 21  yn 1  2C (  2) p 1  C p 1  O  p  2  2C (  2) p 1(1  2 p )  O  p  2 .
Звідси
yn 21  yn 1
2C (  2)
1 2
p 1
 p
 
 O  p 2 .

Тоді похибка (2) може бути обчислена за формулою


y 2  y
y n 21  un 1  n 1 pn 1  O  p  2 ,
1 2
  (3)

а вираз
y 2  y
yˆ n 1  yn 21  n 1p n 1 (4)
2 1
апроксимує величину un 1 з порядком p  1 .
Розглянемо алгоритм автоматичного вибору довжини кроку  так, щоб локальна похибка не
перевищувала допустимої точності  . На основі формули (3) обчислюється похибка

1 yn 21  yn 1


E p  ,
2 1 d
де d — масштабний множник. Для обчислення абсолютної похибки кладуть d  1 , а для
відносної d  yˆ n 1 . Можна використовувати змішане масштабування типу
d  max  yˆ n 1 , yn ,1
або

d  max yˆ n 1 , yn ,10 6 .
Потім величина E порівнюється з заданою величиною допустимої похибки  . Довжина нового
кроку  H   вибирається з умови
1 1
2C (  H 2) p 1  2C  2  p 1   p 1E   .
d d
Звідси
1
   p 1
  ,
E
і
1
   p 1
 H  0,9   . (5)
E
 
Коефіцієнт 0,9 дозволяє врахувати вплив величини O  p  2 . Тоді, якщо E   , обчислений крок

вважається успішними і розв'язування продовжується, виходячи з yˆ n 1 або yn 21 , причому


довжина нового кроку вибирається рівною  H . У протилежному випадку крок відкидається і
обчислення повторюються з новою довжиною кроку  H . Щоб запобігти занадто великому
збільшенню довжини кроку, максимальний коефіцієнт збільшення кроку  , як правило,
вибирають між 1,5 і 5. Після неуспішного кроку рекомендується не збільшувати розмір кроку.
Другий підхід до оцінки локальної похибки полягає в тому, щоб побудувати такі формули
Рунге–Кутта, які б дозволяли обчислити крім розв'язку yn 1 , і розв'язок більш високого порядку
точності yˆ n 1 . Тобто, необхідно знайти таку таблицю коефіцієнтів
0
c2 a21
c3 a31 a32
... ... ... ...
cs a s1 as 2 ... as , s 1
b1 b2 ... bs 1 bs
bˆ1 bˆ2 ... bˆs 1 bˆs ,
щоб величина
yn 1  yn  b1k1  b2k2    bs ks 
мала порядок точності p , а

yˆ n 1  yn   bˆ1k1  bˆ2k 2    bˆs k s 
— порядок точності p  1 . Такі методи називають вкладеними. Локальні похибки методів p –го та
p  1 –го порядків точності мають вигляд:
yn 1  un 1  C p 1  O (  p  2 ) , (6)
yˆ n 1  un 1  Cˆ  p  2  O (  p 3 ) . (7)
Якщо від формули (7) відняти (6), то одержимо
C p 1  yˆ n 1  yn 1  O  p  2  
Отже, для вкладених методів
yˆ n 1  yn 1
E .
d
Довжина нового кроку вибирається з умови
1
1 p 1 1    p 1
C H  C   p 1   p 1E  ,     ,
d d E
тобто за формулою (5).
Виведемо вкладені формули другого і третього порядків апроксимації, таблиця яких має
вигляд
0
c2 a21
c3 a31 a32
b1 b2 b3
bˆ1 bˆ2 bˆ 3
З (11) §3 та аналогічного розкладу для lˆn 1  yˆ n 1  un 1 випливає, що для збереження відповідних
порядків апроксимації, повинні задовольнятися рівняння
b  b  b  1,
1 2 3 bˆ  bˆ  bˆ  1,
1 2 3
1 1
b2c2  b3c3  , bˆ2c2  bˆ3c3  ,
2 2
1
c2  a21, bˆ2c22  bˆ3c 23 ,
3
1
c3  a31  a32 , bˆ3a32c2  .
6
Вибравши c2  1 і b3  0 , з перших двох рівнянь одержимо b1  b2  1 2 . Якщо покласти
c3  1 2 , a32  1 4 , то bˆ1  1 6 , bˆ2  1 6 , bˆ3  4 6 , a31  1 4 . Одержаний метод наведений в таблиці
0
1 1
1 1 1
4 4 2
1 1
0
2 2
1 1 4
.
6 6 6
В основу ефективної програми розв'язування задачі Коші для звичайних диференціальних рівнянь
лягли вкладені методи четвертого і п'ятого порядків Дорманта і Прінса (див. [23]), які
визначаються коефіцієнтами:
0
1 1
5 5
3 3 9
10 40 40
4 44 56 32

5 55 15 9
819372 25360 64448 212
 
9 6561 2187 6561 729
9017 355 46732 49 5103
1  
3168 33 5247 176 18656
35 500 125 2187 11
1 0 
384 1113 192 6784 84
35 500 125 2187 11
0  0
384 1113 192 6784 84
5179 7571 393 92097 187 1
0  .
57600 16695 640 339200 2100 40
Зазначимо, що застосування цього методу вимагає обчислення лише шести правих частин
диференціального рівняння, оскільки k7 збігається з k1 для наступного кроку.
Чисельні методи розв'язування задачі Коші
для звичайних диференціальних рівнянь

§1. Задача Коші для звичайних диференціальних рівнянь

Нехай на відрізку t 0 , T  необхідно знайти розв'язок задачі:


u  f t , u , ut0   u 0 , (1)
де
u  u1, u2 ,, uN T , f   f1, f 2 ,, f N T ,
або в покомпонентному вигляді:
  f m t, u1, u2 ,, uN , m  1, N ,
um (2)
um t0   u0m , m  1, N . (3)
Зауважимо, що систему звичайних диференціальних рівнянь будь–якого порядку можна звести
до системи рівнянь першого порядку (1).
Добре відомі умови, які гарантують існування та єдиність розв'язку задачі (2), (3). Нехай
функції f m , m  1, N неперервні в замкнутій області  
D  t  t0  a, um  u0m  b, m  1, N . З
неперервності функцій f m випливає їх обмеженість, тобто існування константи M  0 такої, що
скрізь у D виконуються нерівності f m  M , m  1, N . Крім того, припустимо, що в D функції f m
задовольняють умову Ліпшиця, тобто

f m t , u1(1) , u2(1) ,, u N  
(1)
 f m t , u1( 2) , u2( 2) ,, u N
( 2)



 L u1(1)  u1( 2)  u2(1)  u2( 2)    u N
(1) ( 2)
 uN 

для будь–яких точок t , u1(1) , u2(1) ,, uN
(1)
 
, t , u1( 2) , u2( 2) ,, uN
( 2)

області D . Якщо умови, накладені на
f m , m  1, N виконуються, то існує єдиний розв'язок u1  u1 t , u2  u2 t ,, uN  uN t  системи (2),
визначений при t  t0  t*  min a, b M  , і такий, що при t  t0 приймає задані початкові умови (3).
Методи розв'язування звичайних диференціальних рівнянь можна розділити на точні,
наближені і чисельні. До точних відносять методи, які дозволяють виразити розв'язок
диференціального рівняння через елементарні функції, або зобразити його за допомогою квадратур
від елементарних функцій. Однак класи рівнянь, для яких розроблені методи знаходження точних
розв'язків, порівняно вузькі і охоплюють дуже малу частину задач, що виникають на практиці.
Наближеними називають методи, в яких розв'язок одержується як границя ut  деякої послідовності
un t , причому елементи цієї послідовності un t  виражаються через елементарні функції або за
допомогою квадратур. Обмежуючись скінченним числом n , одержимо наближений вираз для ut  .
Прикладом може бути метод розкладу розв'язку в степеневий ряд або метод послідовних наближень
Пікара. Ці методи також можуть бути застосовані лише для порівняно простих задач (таких, як
лінійні). Чисельні методи — це алгоритми обчислення наближених значень шуканого розв'язку ut 
на деякій вибраній сітці значень аргументу. Розв'язок при цьому одержується у вигляді таблиці.
Чисельні методи не дозволяють знайти загальний розв'язок; вони можуть дати тільки який–небуть
частинний розв'язок, наприклад, розв'язок задачі Коші (1). Це основний недолік чисельних методів.
Однак, ці методи можна застосувати до дуже широкого класу рівнянь і всіх типів задач для них. Тому
з появою комп’ютерів чисельні методи стали основним засобом розв'язування конкретних
практичних задач.

1
Для розв'язування задачі Коші будемо використовувати чисельні методи. Виберемо на відрізку
t0 , T  деяку, взагалі кажучи, нерівномірну сітку tn , 0  n  n0  значень аргументу з кроком
  tn 1  tn так, щоб для вузлів сітки виконувалися співвідношення t0  t1  t2    tn0  T . Будемо
позначати через ut  точний розв'зок задачі, а через y n  y tn  — наближений розв'язок. Зазначимо,
що наближений розв'язок є сітковою функцією, тобто визначений тільки в точках сітки. Чисельні
методи розв'язування звичайних диференціальних рівнянь розділяють на два класи: однокрокові
(методи рядів Тейлора, методи Рунге–Кутта) та багатокрокові (методи Адамса, формули
диференціювання назад та ін.). Однокрокові методи для обчислення розв'язку y n 1 в точці tn 1 на
кожному кроці використовують лише значення y n , тоді як багатокрокові використовують значення
наближеного розв'язку в кількох попередніх точках.

§2. Метод рядів Тейлора

Для простоти викладення будемо надалі розглядати одне диференціальне рівняння


u  f (t , u), (1)
розв'язок якого задовольняє початкову умову
u(t0 )  u0 . (2)
Якщо функція f (t , u) аналітична в точці (t0 , u0 ) , то розв'язок u t  задачі (1), (2) можна
розкласти у ряд Тейлора. Обмежуючись скінченним числом членів ряду, запишемо наближену
рівність:
t  t0 (t  t0 )2 (t  t0 ) p ( p )
u(t )  u(t0 )  u(t0 )  u(t0 )  ...  u (t0 ). (3)
1! 2! p!
Для знаходження похідних, які стоять у правій частині (3), послідовно продиференціюємо рівняння
(1)
u  f (t , u ), u  f t (t , u )  f (t , u ) f u (t , u ),
u  f tt (t , u )  2 f (t , u ) f tu (t , u )  f 2 (t , u ) f uu (t , u )  (4)
 f u (t , u ) f t (t , u )  f (t , u ) f u (t , u ) , 
Похибка наближеної рівності (3) за умови, що величина t  t0 менша від радіуса збіжності ряду
Тейлора, прямує до нуля при p   .
На практиці застосовують покроковий варіант методу рядів. Виберемо на відрізку t0 , T 
нерівномірну сітку tn , 0  n  n0  з кроком   tn 1  tn . Будемо вважати, що наближений розв'язок в
точці tn вже знайдено, тобто відоме значення u(tn )  yn . Для побудови однокрокового чисельного
методу знаходження розв'язку в наступній точці tn 1  tn   достатньо у формулі (3) покласти t0  tn
, а за t взяти tn   . Тоді одержимо
 2  p ( p)
yn 1  yn  yn  yn  ...  yn , (5)
1! 2! p!
де yn(i ) обчислюються за формулами (4). Якщо б значення yn збігалося зі значенням un  u(tn ) , то
 
похибка від заміни u(tn 1 ) на yn 1 мала б порядок   p 1 . Використовуючи пакети програм
аналітичного диференціювання функцій, за допомогою формул (5), (4) можна послідовно при
заданому y0  u0 обчислити значення yn , n  1, n0 . Однак застосовувати для розрахунків формулу (5)
з великим числом членів не вигідно, тому що навіть при порівняно простій правій частині вирази для
похідних можуть бути громіздкими.
2
§3. Методи Рунге–Кутта

У найпростішому випадку, обмежуючись тільки першими двома членами розкладу (5) §2,
одержимо метод Ейлера (сіткову схему Ейлера)
yn 1  yn  f tn , yn  . (1)
Метод Ейлера дуже простий для реалізації на комп’ютері: на n –ому кроці обчислюється значення
f tn , yn  , яке потім підставляється в (1).
Основне питання при використанні чисельних методів полягає в оцінці точності наближених
значень yn . Величину zn 1  yn 1  un 1 називають похибкою (глобальною похибкою) чисельного
методу, тоді як величину ln 1  yn 1  un 1 , де yn 1 — чисельний розв'язок, одержаний при точному
значенні yn  un називають локальною похибкою. Кажуть, що метод збіжний в точці tn 1 , якщо
zn 1  0 при   0 . Метод збіжний на відрізку t0 , T  , якщо він збіжний в кожній точці t  t0 , T  .
Кажуть, що метод має p –й порядок точності, якщо існує число p  0 таке, що zn 1  O  p при  
0.
Підставимо yn  zn  un в (1) і поділимо одержану рівність на  , тоді будемо мати
zn 1  zn u
 f tn , un  zn   n 1 n .
u
 
Оскільки за теоремою про скінченні прирости
f tn , un  zn   f tn , un   f u tn , un  (1  ) zn zn , 0    1,
то
zn 1  zn u
 f u tn ,u n zn zn  f tn , un   n 1 n .
u
 
Функція n  f tn , un   (un 1  un )  називається похибкою апроксимації або нев'язкою сіткового
рівняння на розв'язку вихідного рівняння (1) §2.
Кажуть, що чисельний метод апроксимує вихідне диференціальне рівняння, якщо  n  0 або
ln 1  0 при   0 . Метод має p –й порядок апроксимації, якщо n  O  p або ln 1  O  p 1 .    
Встановимо порядок апроксимації схеми Ейлера (1). Для цього розкладемо ln 1 в ряд Тейлора
в околі точки tn
ln 1  yn 1  un 1  un  f tn , un   un  un 


2
2
2
 
un  O 3   un  O 3  O 2 .
2
   
Оскільки ln 1  un  f tn , un   un 1   n , то  n  O () . Отже, метод Ейлера має перший порядок
апроксимації.
Покажемо, що схема Ейлера збіжна при   0 і має перший порядок точності. Доведення
проведемо припускаючи, що f u  L, для всіх t0  t  T і величина кроку  — стала. Тоді
zn 1  zn  f u tn , un  zn zn   n  1  L  zn    n 
 1  L 2 zn 1  1  L   n 1    n    1  L n 1 z0 
 1  L n  0    1  L   n 1    n  n  11  L n max i .
0i  n
L
Звідси з урахуванням нерівності 1  L  e , отримаємо
L ( t n  t0 )
zn 1  (tn 1  t0 )e max i  (T  t0 )e L(T  t0 ) max i ,
0i  n 0i  n
3
тобто zn 1  O і наближений розв'язок збіжний до точного з першим порядком точності.
Для одержання точніших розрахункових формул обчислимо проміжне значення yn 1 2 ,
використовуючи схему Ейлера

yn 1 2  yn  f tn , yn , (2)
2
а потім обчислимо yn 1 за формулою
  
yn 1  yn  f  tn  , yn 1 2 . (3)
 2 
Формули (2), (3) називають методом прогнозу–корекції, оскільки на першому етапі (2) наближене
значення розв'язку прогнозується, а на другому етапі (3) прогнозоване значення коректується. Цей
метод можна реалізувати інакше. А саме, спочатку обчислимо послідовно функції
  k 
k1  f tn , yn , k2  f  tn  , yn  1  , (4)
 2 2 
а потім знайдемо
yn 1  yn  k2 . (5)
Така форма реалізації схем (2), (3) називається методом Рунге–Кутта. Оскільки вимагається
обчислити дві проміжні функції k1,k2 , то даний метод називають двоступеневим. Далі ми покажемо,
що цей метод має другий порядок апроксимації.
У загальному випадку явні s –ступеневі методи Рунге–Кутта мають вигляд:
k1  f tn , yn ,
k2  f tn  c2 , yn  a21k1 ,
k3  f tn  c3, yn  a31k1  a32k2 ,

k s  f tn  cs , yn  as1k1    as, s 1k s 1 ,
yn 1  yn  b1k1  b2k2    bs k s ,
де ci , aij , i  2, s, j  1, s  1, bi , i  1, s — дійсні коефіцієнти. Компактне зображення методу Рунге–
Кутта дає таблиця:
0
c2 a21
c3 a31 a32
... ... ... ...
cs as1 as 2 ... as, s 1
b1 b2 ... bs 1 bs .
Переважно коефіцієнти ci задовольняють такі умови
c2  a21, c3  a31  a32 , , cs  as1  as 2    as, s 1, (6)
зміст яких полягає в тому, що всі точки, в яких обчислюється f , є наближеннями першого порядку
до розв'язків utn  ci , i  1, s. Ці умови значно спрощують вивід методів Рунге–Кутта високого
порядку.
Коефіцієнти ci , aij , bi вибираються з міркувань точності. Локальна похибка s –ступеневого
методу Рунге–Кутта дорівнює
ln 1  yn 1  un 1  un  b1k1  b2k2    bs k s  un 1, (7)
де

4
k1  f tn , un ,
ki  f tn  ci , un  ai1k1  ai 2k2    ai ,i 1ki 1 , i  2, s.
Зазначимо, що
 u u 
ln 1    n 1 n  b1k1  b2k2    bs k s    n ,
  
де  n — похибка апроксимації або нев'язка методу.
Зупинимося детальніше на окремих методах. При s  1 одержимо схему Ейлера, а при s  2
— множину методів:
k1  f t n , y n , k 2  f t n  c 2 , y n  a 21k1 ,
y n1  y n  b1k1  b2 k 2 .
Дослідимо локальну похибку двоступеневого методу залежно від вибору параметрів,
припускаючи достатню гладкість розв'язку u t  і функції f t , u  . Для цього розкладемо всі величини,
які входять до виразу локальної похибки (7), за формулою Тейлора в околі точки tn . Запишемо
спочатку розклад за степенями  значення un 1
2 3
un 1  un  un 
2
un  un  O 4 .
6
 
Використовуючи співвідношення (4) з §2, одержимо
2
un 1  un  f   ft  f  fu  
2 (8)

3
6

f tt  2 f  f tu  f 2 f uu  f u  f t  f  f u   O 4 .  
Тут значення функції f t , u  та її частинних похідних беруться при t  tn , u  un .
Розкладемо тепер k2 як функцію  за формулою Тейлора
dk2 (0) 2 d 2k2 (0)
k2 ( )  k2 (0)     O ( 3 ) ,
d 2 d2
Знайдемо похідні
dk 2 ( ) f (t , u ) f (t , u )
 c2  k1a21 , t  tn  c2 , u  un  a21k1 ,
d t u
d 2 k 2 ( )
 2 f (t , u ) 2  2 f (t , u )  2 f (t , u ) 2 2
 c2  2 c2 a21k1  a21k1 .
d 2 t 2 tu u 2
Враховуючи, що k1  f tn , un , a21  c2 , одержимо
dk2 (0) d 2k2 (0)
 c2 ( f t  ffu ),  c22 ( f tt  2 fftu  f 2 f uu ) .
d d2
Тоді

k2  f  c2  f t  f  f u  
2 2
2
   
c2 f tt  2 f  f tu  f 2 f uu  O 3 , (9)

і
 1
ln 1  b1  b2  1 f  2  b2c2   f t  f  f u  
 2
1  1
  
 3   b2c22   f tt  2 f  f tu  f 2 f uu  f u  f t  f  f u   O 4 .
1
 
2  3 6 

5
Прирівнюючи до нуля коефіцієнти при  і  2 , одержимо систему рівнянь, яку повинні
задовольняти коефіцієнти двоступеневого методу для того, щоб цей метод мав другий порядок
апроксимації
1
b1  b2  1, b2c2  , a21  c2 .
2
Зокрема, при b1  0, b2  1, c2  a21  1 2 будемо мати метод другого порядку (4), (5). Оскільки
головний член (перший ненульовий член) тейлорівського розкладу локальної похибки
1  1
  
ln 1  3   b2c22   f tt  2 f  f tu  f 2 f uu  f u  f t  f  f u   O 4 ,
1
(10)  
2  3 6 
то звідси випливає, що двоступеневого методу третього порядку апроксимації не існує.
Щоб побудувати триступеневу схему третього порядку апроксимації, необхідно розкласти
функції, які входять до (7) за формулою Тейлора до величин порядку 3 включно. Аналогічно до k2 ,
розкладемо k3 за степенями  :
dk3 (0) 2 d 2k3 (0)
k3 ( )  k3 (0)     O ( 3 ) .
d 2 d2
Обчислимо
dk 3 ( ) f (t , u ) f (t , u )  dk 
 c3   a31k1  a32 k 2  a32 2 , t  t n  c3 , u  u n  a31k1  a32k 2 ,
d t u  d 
d 2 k 3 ( )
 2 f (t , u ) 2  2 f (t , u )  dk 
 c3  2 c3  a31k1  a32 k 2  a32  2  
d 2
t 2 tu  d 
f (t , u )  d 2 k 2 
2
 2 f (t , u )  dk  dk ( )
  a31k1  a32 k 2   2   2a32 2  a32  .
u 2  d  u  d d 2 
Звідси на підставі (6) будемо мати
dk3 (0) d 2k3 (0)
 c3 ( f t  ffu ),  c32 ( f tt  2 fftu  f 2 f uu )  2a32c2 f u ( f t  ffu ) .
d d 2

Тоді
k3  f  c3  f t  f  f u  
2 2
2
  
c3 f tt  2 f  f tu  f 2 f uu  2a32c2 f u  f t  f  f u   O 3 .
    (11)

Враховуючи (8), (9), (11) локальна похибка триступеневого методу буде мати вигляд
 1
ln 1  b1  b2  b3  1 f  2  b2c2  b3c3   f t  f  f u  
 2
1  1

 3   b2c22  b3c32   f tt  2 f  f tu  f 2 f uu   (12)
 
2 3
 1 
  b3a32c2   f u  f t  f u   O ( 4 ).
 6 
Прирівняємо до нуля коефіцієнти при , 2 , 3 , тоді одержимо умови третього порядку апроксимації
1 1
b1  b2  b3  1, b2c2  b3c3  , b2c22  b3c32  ,
2 3
1
b3a32c2  , c2  a21, c3  a31  a32 .
6
Один з методів, який задовольняє ці умови, має вигляд

6
0
1 1
2 2
11 2
1 4 1
.
6 6 6
У випадку s  3 не існує формул четвертого порядку апроксимації.
При s  4, 5 не можна побудувати формул п'ятого порядку апроксимації. Наведемо таблицю
коефіцієнтів найбільш вживаного чотириступеневого методу четвертого порядку
0
1 1
2 2
1 1
0 (13)
2 2
0 0 11
1 2 2 1
.
6 6 6 6
При певних припущеннях щодо гладкості правої частини рівняння (1) §4, подібно до того як це
було зроблено для схеми Ейлера, можна довести що, якщо метод Рунге–Кутта має p –й порядок
апроксимації, то він збіжний з p –м порядком точності (див., напр., [18]).

You might also like