Równania różniczkowe zwyczajne
W najprostszym przypadku poszukujemy funkcji jednej zmiennej rzeczywistej x w postaci:
( )
x yy= , (1)
której pochodna y'
( )
x ma spełniać równanie dane jako:( )
x f(
x y( )
x)
y' = , , (2)
lub w skrócie:
( )
x y fy'= , . (3)
W ogólności tak postawiony problem ma nieskończenie wiele rozwiązań, spomiędzy których wy- bieramy rozwiązanie szczególne, spełniające dodatkowy warunek, zwany warunkiem początkowym – poszukujemy takiej funkcji (1), która dla danego x spełnia: 0
( )
x0 y0y = ; (4)
Zadanie (2), (4) można uogólnić na przypadki:
• układu n równań różniczkowych zwyczajnych:
( ) ( ( ) ( ) ( ) ( ) )
( ) ( ( ) ( ) ( ) ( ) )
( ) ( ( ) ( ) ( ) ( ) )
⎪⎪
⎩
⎪⎪
⎨
⎧
=
=
=
x y x y x y x y x f x y
x y x y x y x y x f x y
x y x y x y x y x f x y
n i
n n
n i
n i
,..., ,...,
, ,
,..., ,...,
, ,
,..., ,...,
, ,
2 1 '
2 1 2 '
2
2 1 1 '
1
M , (5)
n nieznanych funkcji rzeczywistych yi
( )
x, i=1,2,...,i,...,n zmiennej rzeczywistej x z wa- runkiem początkowym:( ) ( )
( )
0 020 0 2
10 0 1
n
n x y
y
y x y
y x y
=
=
=
M ; (6)
• równania różniczkowego rzędu wyższego niż pierwszy:
( )
( )
x f(
x y( ) ( ) ( )
x y x y x y( )( )
x)
ym = , , ' , '' ,..., m−1 , (7)
jednej funkcji rzeczywistej (1) z warunkiem początkowym:
( )
x0 = y0 ,y'( )
x0 = y0' ,y''( )
x0 =y0'',...,y(m−1)( )
x0 = y0(m−1)y . (8)
Przypadek drugi z rozważanych powyżej zawsze można sprowadzić do przypadku pierwszego po- przez ciąg podstawień:
( ) ( ) ( ) ( ) ( )
( )( )
( ) ( ) ( ) ( ) ( ) ( )
( )
x f(
x z( ) ( )
x z x z( )
x)
z
x z x z
x z x z
x z x z
x y x z
x y x z
x y x z
m m
m m
m
m ' , 1 , 2 ,...,
' 1
3 '
2
2 '
1
1 ' 2
1
=
=
=
=
⇒
=
=
=
− −
M M . (9)
Politechnika Krakowska
Ze względu na sposób postępowania numerycznego, metody rozwiązania problemu (2) z warun- kiem (4) można podzielić na dwie kategorie:
• metody jednokrokowe (znane również pod nazwą samostartujących), należą tu na przykład metoda Eulera, bądź metody typu Rungego – Kutty,
• metody wielokrokowe (znane także jako metody typu predyktor – korektor), do których na- leżą np. metody Adamsa – Bashforda (predyktor) i Adamsa – Moultona (korektor).
Metody jednokrokowe można zapisać przy pomocy następujących wzorów:
⎟⎟⎠
⎜⎜ ⎞
⎝
⎛ + ⋅α + ⋅ β ⋅
=
∑
= s
j ij j
n i n
i f x h y h k
k
1
, , (10)
0 ,
1
1= + ⋅
∑
⋅ ≥+ = i
s
i i i
n
n y h w k w
y , (11)
wynikających z rozwinięcia poszukiwanej funkcji (1) w otoczeniu punktu y w szereg Taylora. n Konkretne wartości współczynników w , i α i i β w przypadku metod jawnych, dla których musi ij być spełniony warunek s≤ we wzorze (10), przedstawiają się następująco: i
• dla metody Eulera w1=1, α1=0, β11=0, czyli:
( )
1 1
1 ,
k h y y
y x f k
n n
n n
⋅ +
=
=
+
; (12)
• dla metody Rungego – Kutty II rzędu w1=0, w2 =1, α1 =0, α2 = 21, β11=0 i β22= 21, czy- li:
( )
( )
(
1 2)
1
1 21 21
2
1
1 0 ,
,
k k h y y
k h y h x f k
y x f k
n n
n n
n n
⋅ +
⋅
⋅ +
=
⋅
⋅ +
⋅ +
=
=
+
; (13)
• dla metody Rungego – Kutty IV rzędu w1 =61, w2 =13, w3 =31, w4= 61, α1=0, α2 = 21,
21 3 =
α , α4 =1, β11=0, β22=12, β33= 21 i β44=1 czyli:
( )
( )
( )
( )
(
16 1 31 2 31 3 61 4)
1
3 4
2 2 2 1
3 1
2 1 2 1
2 1
1
, , , ,
k k k k h y y
k h y h x f k
k h y h x f k
k h y h x f k
y x f k
n n
n n
n n
n n
n n
⋅ +
⋅ +
⋅ +
⋅
⋅ +
=
⋅ + +
=
⋅
⋅ +
⋅ +
=
⋅
⋅ +
⋅ +
=
=
+
. (14)
We wzorach (13) i (14) wszystkie współczynniki β , dla których ij i≠ , są równe zeru. j
Metoda Eulera jest metodą rzędu pierwszego, czyli różnica pomiędzy ścisłą ynść+1 a przybliżoną y n+1 wartością rozwiązania w kolejnym punkcie x zmienia się z pierwszą potęgą n+1 h . W metodzie Rungego – Kutty II rzędu różnica ta zmienia się z drugą, w metodzie IV rzędu z czwartą potęgą h . Dla ilustracji toku postępowania przy rozwiązywaniu problemu początkowego każdą z wymienio- nych powyżej metod, zastosujmy je do wykonania trzech kolejnych kroków w poszukiwaniu nume- rycznego rozwiązania zadania:
1 5 3
+
−
= ⋅ t
z dt
dz , (15)
przy warunku początkowym:
( )
2,0, 0 ,
2 0 0
0 = z =z t =
t , (16)
z krokiem ∆t=h= 21 . Problem ten ma rozwiązanie ścisłe w postaci funkcji z
( )
t danej wzorem:( ) ( )
3 5 81
13 + +
= t t
zść . (17)
Metoda Eulera Iteracja pierwsza:
( )
0,3333331 000 , 2
5 000000 ,
2 3 1
5 , 3
0 0 0
0
0 =
+
−
= ⋅ +
+
= ⋅
= t
z z t f
f , (18)
166667z1=z0+h⋅f0=2,000000+0,500⋅0,333333=2, . (19) Iteracja druga:
( )
0,4285711 500 , 2
5 166667 ,
2 3 1
5 , 3
1 1 1 1
1 =
+
−
= ⋅ +
+
= ⋅
= t
z z t f
f , (20)
380952 ,
2 428571 ,
0 500 , 0 166667 ,
1 2
1
2 =z +h⋅ f = + ⋅ =
z . (21)
Iteracja trzecia:
( )
0,5357141 000 , 3
5 380952 ,
2 3 1
5 , 3
2 2 2
2
2 =
+
−
= ⋅ +
+
= ⋅
= t
z z t f
f , (22)
648810z3=z2+h⋅f2 =2,380952+0,500⋅0,535714=2, . (23) Metoda Rungego – Kutty II rzędu
Iteracja pierwsza:
{ }
( )
{ }
(
{ }) (
{ })
( ) 0,3846151 5 , 3
333333 ,
1 0 5 , 3
1 500 , 0 5 , 0 000 , 2
5 333333 , 0 500 , 0 5 , 0 000000 , 2 3 21
0
1 2 1 0 1 1
1 12 0 21 0 1 2
1 000 , 2
5 000000 , 2 3 0
0 0 0 1
1
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
−
= ⋅
=
+
⋅ +
−
⋅
⋅ +
⋅ +
−
⋅
h t
k h k z
h z h t f k
t z z t f k
, (24)
{ }1 2,000000 0,500 384615 2,192308
2 0
1=z +h⋅k = + ⋅ =
z . (25)
Iteracja druga:
{ }
( )
{ }
(
{ }) (
{ })
( ) 0,5106231 5 , 3
450549 ,
1 0 5 , 3
1 500 , 0 5 , 0 500 , 2
5 450549 , 0 500 , 0 5 , 0 192308 , 2 3 21
1
2 1 12 2 1
1 21 1 21 1 2 2
1 500 , 2
5 192308 , 2 3 1
1 1 1 2 1
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
−
= ⋅
=
+
⋅ +
−
⋅
⋅ +
⋅ +
−
⋅
h t
k h k z
h z h t f k
t z z t f k
, (26)
{ }2 2,192308 0,500 0,510623 2,447619
2 1
2 =z +h⋅k = + ⋅ =
z . (27)
Politechnika Krakowska
Iteracja trzecia:
{ }
( )
{ }
(
{ }) (
{ })
( ) 0,6546221 5 , 3
585714 ,
1 0 5 , 3
1 500 , 0 5 , 0 000 , 3
5 585714 , 0 500 , 0 5 , 0 447619 , 2 3 12
2
3 1 21 3 2
2 1 2 1 21 2 3
2
1 000 , 3
5 447619 , 2 3 2
2 2 2 3
1
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
−
= ⋅
=
+
⋅ +
−
⋅
⋅ +
⋅ +
−
⋅
h t
k h k z
h z h t f k
t z z t f k
, (28)
{ }3 2,447619 0,500 0,654622 2,774930
2 2
3 =z +h⋅k = + ⋅ =
z . (29)
Metoda Rungego – Kutty IV rzędu Iteracja pierwsza:
{ }
( )
{ }
(
{ }) (
{ })
( ){ }
(
{ }) (
{ })
( ){ }
(
{ }) (
{ })
( ) 0,4556211 5 , 3
396450 ,
1 0 5 , 3
384615 ,
1 0 5 , 3
333333 ,
1 0 5 , 3
1 500 , 0 000 , 2
5 396450 , 0 500 , 0 000000 , 2 3 0
1 3 1 0
3 0 0 1
4
1 500 , 0 5 , 0 000 , 2
5 384615 , 0 500 , 0 5 , 0 000000 , 2 3 21
0
1 2 21 1 0
2 12 0 21 0 1 3
1 500 , 0 5 , 0 000 , 2
5 333333 , 0 500 , 0 5 , 0 000000 , 2 3 21
0
1 1 21 1 0
1 21 0 21 0 1 2
1 000 , 2
5 000000 , 2 3 0
0 0
0 1
1
= + =
+
−
⋅ +
= ⋅
⋅ + +
=
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
−
= ⋅
=
+ +
−
⋅ +
⋅
+
⋅ +
−
⋅
⋅ +
⋅
+
⋅ +
−
⋅
⋅ +
⋅ +
−
⋅
h t
k h k z
h z h t f k
h t
k h k z
h z h t f k
h t
k h k z
h z h t f k
t z z t f k
, (30)
{ } { } { } { }
( )
(
0,396450 610,455621)
2,19592431 384615 , 30 333333 1 , 60 500 1 , 0 000000 , 2
1 4 61 1 3 31 1 2 31 1 1 61 0 1
=
=
=
⋅ +
⋅ +
⋅ +
⋅
⋅ +
=
⋅ +
⋅ +
⋅ +
⋅
⋅ +
k k
k k
h z
z . (31)
Iteracja druga:
{ }
( )
{ }
(
{ }) (
{ })
( ){ }
(
{ }) (
{ })
( ){ }
(
{ }) (
{ })
( ) 0,5942801 5 , 3
526233 ,
1 0 5 , 3
514135 ,
1 0 5 , 3
453649 ,
1 0 5 , 3
1 500 , 0 500 , 2
5 526233 , 0 500 , 0 195924 , 2 3 1
2 3 2 1
3 1 1 2 4
1 500 , 0 5 , 0 500 , 2
5 514135 , 0 500 , 0 5 , 0 195924 , 2 3 21
1
2 2 21 2 1
2 2 1 1 21 1 2 3
1 500 , 0 5 , 0 500 , 2
5 453649 , 0 500 , 0 5 , 0 195924 , 2 3 21
1
2 1 12 2 1
1 21 1 21 1 2 2
1 500 , 2
5 195924 , 2 3 1
1 1 1 2 1
= + =
+
−
⋅ +
= ⋅
⋅ + +
=
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
−
= ⋅
=
+ +
−
⋅ +
⋅
+
⋅ +
−
⋅
⋅ +
⋅
+
⋅ +
−
⋅
⋅ +
⋅ +
−
⋅
h t
k h k z
h z h t f k
h t
k h k z
h z h t f k
h t
k h k z
h z h t f k
t z z t f k
, (32)
{ } { } { } { }
( )
(
610,453649 130,514135 130,526233 160,594280)
2,456646500 , 0 195924 , 2
1 4 61 1 3 13 1 2 31 1 1 61 0 1
=
=
=
⋅ +
⋅ +
⋅ +
⋅
⋅ +
=
⋅ +
⋅ +
⋅ +
⋅
⋅ +
k k
k k
h z
z . (33)
Iteracja trzecia:
{ }
( )
{ }
(
{ }) (
{ })
( ){ }
(
{ }) (
{ })
( ){ }
(
{ }) (
{ })
( ) 0,7514831 5 , 3
674489 ,
1 0 5 , 3
662188 ,
1 0 5 , 3
592484 ,
1 0 5 , 3
1 500 , 0 000 , 3
5 674489 , 0 500 , 0 456646 , 2 3 2
3 3 3 2
3 2 2 3
4
1 500 , 0 5 , 0 000 , 3
5 662188 , 0 500 , 0 5 , 0 456646 , 2 3 12
2
3 2 21 3 2
2 21 2 21 2 3
3
1 500 , 0 5 , 0 000 , 3
5 592484 , 0 500 , 0 5 , 0 456646 , 2 3 21
2
3 2 1 2 1 3
1 12 2 21 2 3
2
1 000 , 3
5 456646 , 2 3 2
2 2 2 3
1
= + =
+
−
⋅ +
= ⋅
⋅ + +
=
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
⋅ +
−
⋅
⋅ +
= ⋅
⋅
⋅ +
⋅ +
=
= + =
−
= ⋅
=
+ +
−
⋅ +
⋅
+
⋅ +
−
⋅
⋅ +
⋅
+
⋅ +
−
⋅
⋅ +
⋅ +
−
⋅
h t
k h k z
h z h t f k
h t
k h k z
h z h t f k
h t
k h k z
h z h t f k
t z z t f k
, (34)
{ } { } { } { }
( )
(
610,592484 130,662188 130,674489 160,751483)
2,791423500 , 0 456646 , 2
1 6 4 1 1 3 3 1 1 3 2 1 1 6 1 0 1 1
=
=
=
⋅ +
⋅ +
⋅ +
⋅
⋅ +
=
⋅ +
⋅ +
⋅ +
⋅
⋅ +
k k
k k
h z
z . (35)
W tablicach 1 i 2 zestawiono błąd bezwzględny i błąd względny procentowy popełnione przy obli- czaniu wartości funkcji z
( )
t w punkcie t=3,500 przedstawionymi powyżej metodami przy róż- nych długościach kroku ∆t . Wartość rozwiązania analitycznego w tym punkcie, użyta do wyzna- czenia błędów bezwzględnego (błąd 1) i względnego procentowego (błąd 2) przedstawionych w ko- lumnach 4 i 5 tablicy, jest równa zść(
3,500)
=2,791667 .Tablica 1. Błąd rozwiązania przybliżonego w zależności od długości kroku obliczeń.
Krok Metoda Wartość Błąd 1 Błąd 2 [%] Lof Euler 2,648810 0,142857 5,117265 3 Runge-Kutta II 2,774930 0,016737 0,599534 6 0,5000
Runge-Kutta IV 2,791423 0,000244 0,008740 12 Euler 2,773488 0,018178 0,651160 30 Runge-Kutta II 2,791455 0,000212 0,007594 60 0,0500
Runge-Kutta IV 2,791667 0,000000 0,000001 120 Euler 2,789798 0,001869 0,066953 300 Runge-Kutta II 2,791665 0,000002 0,000078 600 0,0050
Runge-Kutta IV 2,791667 0,000000 0,000000 1200 Euler 2,791479 0,000187 0,006714 3000 Runge-Kutta II 2,791667 0,000000 0,000000 6000 0,0005
Runge-Kutta IV 2,791667 0,000000 0,000000 12000
W ostatniej kolumnie tablicy 1 (Lof) przedstawiono liczbę obliczeń wartości funkcji stojącej po prawej stronie równania (15) koniecznych do wyznaczenia rozwiązania zapisanego w kolumnie trzeciej.
Jak wynika z powyższej tablicy dziesięciokrotne zmniejszenie długości kroku całkowania powodu- je zmniejszenie błędu względnego rozwiązania w metodzie Eulera około dziesięć razy, w metodzie Rungego – Kutty II rzędu około sto razy i w metodzie Rungego – Kutty IV rzędu około dziesięć ty- sięcy razy. Jest to zgodne z stwierdzeniem dotyczącym rzędu każdej z rozważanych metod, zawar- tym na stronie drugiej.
Wyznaczenie wartości rozwiązania przybliżonego w kolejnym punkcie wymaga jednokrotnego ob- liczenia prawej strony równania (2) w wypadku stosowania metody Eulera, dwukrotnego dla meto- dy Rungego – Kutty II rzędu i czterokrotnego dla metody Rungego – Kutty IV rzędu. W realnych zadaniach obliczanie prawej strony równania (2) jest najbardziej czasochłonną czynnością w każdej iteracji. Wobec tego, aby metoda Rungego – Kutty II rzędu była konkurencyjna w stosunku do me- tody Eulera, musi dawać wyniki takiej samej dokładności przy dwukrotnie dłuższym kroku obli- czeń, a metoda Rungego – Kutty IV rzędu przy czterokrotnie dłuższym. Jak widać z tablicy 1 (wier- sze 11, 6 i 4) warunki te są spełnione z naddatkiem, gdyż uzyskanie wyniku porównywalnego z wynikiem uzyskanym w trzech krokach metodą Rungego – Kutty IV rzędu (wiersz czwarty tablicy) kosztem dwunastokrotnego obliczenia prawej strony (15) wymaga wykonania około 30 kroków me- todą Rungego – Kutty II rzędu (wiersz szósty tablicy) czyli sześćdziesięciokrotnego obliczenia prawej strony (15) i 3000 kroków metodą Eulera (wiersz jedenasty tablicy) czyli obliczenia prawej strony (15) trzy tysiące razy. Tak więc, spośród trzech prezentowanych metod metoda Rungego – Kutty IV rzędu jest najbardziej efektywna w zastosowaniach praktycznych.
Politechnika Krakowska
Rys. 1 Rozwiązanie problemu początkowego (15), (16) w przedziale metodami Eulera (e), Runge- go – Kutty II rzędu (rk2) i Rungego – Kutty IV rzędu (rk4) z krokiem . Dla porównania na wykresie naniesiono również wartości analityczne rozwiązania (an).
W metodach wielokrokowych typu Adamsa – Bashforda i Adamsa – Moultona
2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7
2 3 4 5 6 7 8
e rk2 rk4 an
t