17.05.2015 Views

Metody numeryczne cz. 10 - Instytut Metod Komputerowych w ...

Metody numeryczne cz. 10 - Instytut Metod Komputerowych w ...

Metody numeryczne cz. 10 - Instytut Metod Komputerowych w ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Równania różni<strong>cz</strong>kowe zwy<strong>cz</strong>ajne<br />

W najprostszym przypadku poszukujemy funkcji jednej zmiennej rze<strong>cz</strong>ywistej x w postaci:<br />

y( x)<br />

której pochodna y' ( x)<br />

ma spełniać równanie dane jako:<br />

y ( x) f ( x,<br />

y( x)<br />

)<br />

lub w skrócie:<br />

y = , (1)<br />

' = , (2)<br />

( x y)<br />

y '= f , . (3)<br />

W ogólności tak postawiony problem ma nieskoń<strong>cz</strong>enie wiele rozwiązań, spomiędzy których wybieramy<br />

rozwiązanie sz<strong>cz</strong>ególne, spełniające dodatkowy warunek, zwany warunkiem po<strong>cz</strong>ątkowym<br />

– poszukujemy takiej funkcji (1), która dla danego x<br />

0<br />

spełnia:<br />

Zadanie (2), (4) można uogólnić na przypadki:<br />

• układu n równań różni<strong>cz</strong>kowych zwy<strong>cz</strong>ajnych:<br />

'<br />

⎧ y1<br />

⎪ '<br />

y2<br />

⎨<br />

⎪<br />

⎪ '<br />

⎩yn<br />

y ( x 0<br />

) = y0<br />

; (4)<br />

( x) = f1( x,<br />

y1( x) , y2( x) ,..., yi<br />

( x) ,..., yn( x)<br />

)<br />

( x) = f ( x,<br />

y ( x) , y ( x) ,..., y ( x) ,..., y ( x)<br />

)<br />

2<br />

( x) = f ( x,<br />

y ( x) , y ( x) ,..., y ( x) ,..., y ( x)<br />

)<br />

n<br />

1<br />

1<br />

2<br />

M<br />

2<br />

i<br />

i<br />

n<br />

n<br />

, (5)<br />

n nieznanych funkcji rze<strong>cz</strong>ywistych y i<br />

( x),<br />

i = 1,2,..., i,...,<br />

n zmiennej rze<strong>cz</strong>ywistej x z warunkiem<br />

po<strong>cz</strong>ątkowym:<br />

y<br />

y<br />

y<br />

1<br />

2<br />

( x0<br />

)<br />

( x )<br />

0<br />

M<br />

= y<br />

= y<br />

<strong>10</strong><br />

20<br />

( x0<br />

) =<br />

0<br />

n<br />

y n<br />

• równania różni<strong>cz</strong>kowego rzędu wyższego niż pierwszy:<br />

y<br />

( )<br />

( m ) ' ''<br />

( m−1<br />

( x) f x,<br />

y( x) , y ( x) , y ( x) ,..., y )<br />

( x)<br />

; (6)<br />

= , (7)<br />

jednej funkcji rze<strong>cz</strong>ywistej (1) z warunkiem po<strong>cz</strong>ątkowym:<br />

'<br />

' ''<br />

'' ( m−1<br />

( ) ( ) ( ) ) ( m−1)<br />

x = y , y x = y , y x = y ,..., y ( x ) = y<br />

y . (8)<br />

0<br />

0<br />

0<br />

0<br />

0<br />

Przypadek drugi z rozważanych powyżej zawsze można sprowadzić do przypadku pierwszego poprzez<br />

ciąg podstawień:<br />

z<br />

m<br />

z<br />

z<br />

( x) = y( x)<br />

'<br />

( x) = y ( x)<br />

1<br />

2<br />

M<br />

( m−1<br />

( x) = y )<br />

( x)<br />

⇒<br />

'<br />

z<br />

m<br />

'<br />

z<br />

1<br />

'<br />

z<br />

0<br />

( x) = z2( x)<br />

( x) = z ( x)<br />

2<br />

M<br />

'<br />

zm−<br />

1( x) = zm( x)<br />

( x) = f ( x z ( x) , z ( x) ,..., z ( x)<br />

)<br />

3<br />

,<br />

1 2<br />

0<br />

m<br />

0<br />

. (9)<br />

1


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

Ze względu na sposób postępowania <strong>numery<strong>cz</strong>ne</strong>go, metody rozwiązania problemu (2) z warunkiem<br />

(4) można podzielić na dwie kategorie:<br />

• metody jednokrokowe (znane również pod nazwą samostartujących), należą tu na przykład<br />

metoda Eulera, bądź metody typu Rungego – Kutty,<br />

• metody wielokrokowe (znane także jako metody typu predyktor – korektor), do których należą<br />

np. metody Adamsa – Bashforda (predyktor) i Adamsa – Moultona (korektor).<br />

<strong><strong>Metod</strong>y</strong> jednokrokowe można zapisać przy pomocy następujących wzorów:<br />

⎛<br />

s<br />

⎞<br />

ki<br />

= f<br />

⎜ xn<br />

+ h ⋅αi, yn<br />

+ h ⋅∑βij<br />

⋅ k<br />

j<br />

⎟ , (<strong>10</strong>)<br />

⎝<br />

j=<br />

1 ⎠<br />

s<br />

y<br />

n+ 1<br />

= yn<br />

+ h ⋅∑<br />

wi<br />

⋅ ki<br />

, wi<br />

≥ 0 , (11)<br />

i=<br />

1<br />

wynikających z rozwinięcia poszukiwanej funkcji (1) w oto<strong>cz</strong>eniu punktu y n<br />

w szereg Taylora.<br />

Konkretne wartości współ<strong>cz</strong>ynników w<br />

i<br />

, α<br />

i<br />

i β<br />

ij<br />

w przypadku metod jawnych, dla których musi<br />

być spełniony warunek s ≤ i we wzorze (<strong>10</strong>), przedstawiają się następująco:<br />

• dla metody Eulera w = 1<br />

1 , α = 0 , β = 0<br />

1 11<br />

y<br />

k<br />

n+<br />

1<br />

=<br />

, <strong>cz</strong>yli:<br />

( x y )<br />

1<br />

f<br />

n,<br />

= y<br />

n<br />

n<br />

+ h⋅k<br />

1<br />

; (12)<br />

• dla metody Rungego – Kutty II rzędu w = 1<br />

0 , w = 1,<br />

α = 0 , 1<br />

2 1<br />

α<br />

2<br />

=<br />

2<br />

, β = 11<br />

0 i 1<br />

β<br />

22<br />

=<br />

2<br />

, <strong>cz</strong>yli:<br />

k<br />

2<br />

y<br />

=<br />

n+<br />

1<br />

f<br />

k1<br />

= f ( xn,<br />

yn<br />

)<br />

1<br />

1<br />

( xn<br />

+<br />

2<br />

⋅h,<br />

yn<br />

+<br />

2<br />

⋅h<br />

⋅k1<br />

)<br />

y + h⋅( 0⋅k<br />

+ 1⋅k<br />

)<br />

=<br />

n<br />

1<br />

2<br />

; (13)<br />

1<br />

1<br />

1<br />

1<br />

• dla metody Rungego – Kutty IV rzędu w<br />

1<br />

=<br />

6<br />

, w<br />

2<br />

=<br />

3<br />

, w<br />

3<br />

=<br />

3<br />

, w<br />

4<br />

=<br />

6<br />

, α = 1<br />

0 , 1<br />

α<br />

2<br />

=<br />

2<br />

,<br />

1<br />

α<br />

3<br />

=<br />

2<br />

, α = 4<br />

1 , β = 0 , 1<br />

1<br />

11<br />

β<br />

22<br />

=<br />

2<br />

, β<br />

33<br />

=<br />

2<br />

i β = 44<br />

1 <strong>cz</strong>yli:<br />

y<br />

n+<br />

1<br />

k<br />

k<br />

2<br />

3<br />

= y<br />

=<br />

k<br />

n<br />

=<br />

4<br />

f<br />

f<br />

=<br />

+ h<br />

k1<br />

= f ( xn,<br />

yn<br />

)<br />

1<br />

1<br />

( xn<br />

+<br />

2<br />

⋅ h,<br />

yn<br />

+<br />

2<br />

⋅ h⋅<br />

k1)<br />

1<br />

1<br />

( xn<br />

+<br />

2<br />

⋅h,<br />

yn<br />

+<br />

2<br />

⋅h⋅k2<br />

)<br />

f ( xn<br />

+ h,<br />

yn<br />

+ h⋅k3)<br />

1 1 1 1<br />

⋅( ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

)<br />

We wzorach (13) i (14) wszystkie współ<strong>cz</strong>ynniki β<br />

ij<br />

, dla których<br />

6<br />

1<br />

3<br />

2<br />

3<br />

3<br />

6<br />

4<br />

. (14)<br />

i ≠ j , są równe zeru.<br />

ść<br />

<strong>Metod</strong>a Eulera jest metodą rzędu pierwszego, <strong>cz</strong>yli różnica pomiędzy ścisłą yn<br />

+ 1<br />

a przybliżoną y<br />

n+ 1<br />

wartością rozwiązania w kolejnym punkcie x<br />

n+ 1<br />

zmienia się z pierwszą potęgą h . W metodzie<br />

Rungego – Kutty II rzędu różnica ta zmienia się z drugą, w metodzie IV rzędu z <strong>cz</strong>wartą potęgą h .<br />

Dla ilustracji toku postępowania przy rozwiązywaniu problemu po<strong>cz</strong>ątkowego każdą z wymienionych<br />

powyżej metod, zastosujmy je do wykonania trzech kolejnych kroków w poszukiwaniu <strong>numery<strong>cz</strong>ne</strong>go<br />

rozwiązania zadania:<br />

2


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

dz 3⋅<br />

z − 5<br />

= , (15)<br />

dt t + 1<br />

przy warunku po<strong>cz</strong>ątkowym:<br />

t<br />

0<br />

= 2,0<br />

, z0<br />

= z( t0<br />

) = 2, 0 , (16)<br />

1<br />

z krokiem ∆t = h =<br />

2<br />

. Problem ten ma rozwiązanie ścisłe w postaci funkcji z () t danej wzorem:<br />

k<br />

k<br />

( )<br />

+1 5<br />

()<br />

3 z = t<br />

ść t + . (17)<br />

81 3<br />

<strong>Metod</strong>a Eulera<br />

Iteracja pierwsza:<br />

3⋅<br />

z0<br />

+ 5 3⋅<br />

2,000000 − 5<br />

f<br />

0<br />

= f ( t0,<br />

z0<br />

) = =<br />

= 0, 333333 , (18)<br />

t + 1 2,000 + 1<br />

0<br />

z = z + h⋅<br />

f = 2,000000 + 0,500⋅0,333333<br />

2,166667 . (19)<br />

1 0 0<br />

=<br />

Iteracja druga:<br />

3⋅<br />

z1<br />

+ 5 3⋅2,166667<br />

− 5<br />

f<br />

1<br />

= f ( t1,<br />

z1<br />

) = =<br />

= 0, 428571 , (20)<br />

t + 1 2,500 + 1<br />

1<br />

z = z + h ⋅ f = 2,166667 + 0,500⋅0,428571<br />

2,380952 . (21)<br />

2 1 1<br />

=<br />

Iteracja trzecia:<br />

3⋅<br />

z2<br />

+ 5 3⋅2,380952<br />

− 5<br />

f<br />

2<br />

= f ( t2,<br />

z2<br />

) = =<br />

= 0, 535714 , (22)<br />

t + 1 3,000 + 1<br />

2<br />

z = z + h⋅<br />

f = 2,380952 + 0,500⋅0,535714<br />

2,6488<strong>10</strong> . (23)<br />

3 2 2<br />

=<br />

{} 1<br />

= f ( t , z )<br />

1<br />

1<br />

( t + ⋅h,<br />

z + ⋅h⋅k<br />

)<br />

{} 1<br />

{} 1<br />

2<br />

=<br />

f<br />

0<br />

2<br />

0<br />

k<br />

2<br />

1<br />

1<br />

<strong>Metod</strong>a Rungego – Kutty II rzędu<br />

0<br />

0<br />

3⋅<br />

=<br />

{} 1<br />

Iteracja pierwsza:<br />

3⋅<br />

z0<br />

− 5<br />

= =<br />

t + 1<br />

0<br />

1 {} 1<br />

( z + ⋅h⋅k<br />

) − 5 3⋅( 2,000000+<br />

0,5⋅0,500⋅0,333333)<br />

0<br />

t<br />

0<br />

+<br />

2<br />

1<br />

2<br />

1<br />

⋅h<br />

+ 1<br />

3⋅2,000000−5<br />

2,000+<br />

1<br />

=<br />

= 0,333333<br />

2,000+<br />

0,5⋅0,500+<br />

1<br />

−5<br />

= 0,384615<br />

, (24)<br />

z = z + h⋅k<br />

= 2,000000 + 0,500⋅384615<br />

2,192308 . (25)<br />

1 0 2<br />

=<br />

{} 2<br />

= f ( t , z )<br />

1<br />

1<br />

( t + ⋅ h,<br />

z + ⋅h⋅k<br />

)<br />

{} 2<br />

{} 2<br />

2<br />

=<br />

f<br />

1<br />

2<br />

1<br />

2<br />

k<br />

1<br />

1<br />

1<br />

1<br />

3⋅<br />

=<br />

{} 2<br />

Iteracja druga:<br />

3⋅<br />

z1<br />

− 5<br />

= =<br />

t + 1<br />

1<br />

{} 2<br />

( z1<br />

+ ) 1<br />

2<br />

⋅h⋅k1<br />

− 5 3⋅( 2,192308+<br />

0,5⋅0,500⋅0,450549) −5<br />

=<br />

= 0, 5<strong>10</strong>623<br />

t<br />

1<br />

+<br />

1<br />

2<br />

⋅h<br />

+ 1<br />

3⋅2,192308−5<br />

2,500+<br />

1<br />

= 0,450549<br />

2,500+<br />

0,5⋅0,500+<br />

1<br />

, (26)<br />

z = z + h⋅k<br />

= 2,192308 + 0,500⋅0,5<strong>10</strong>623<br />

2,447619 . (27)<br />

2 1 2<br />

=<br />

3


k<br />

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

{} 3<br />

= f ( t , z )<br />

1<br />

1<br />

( t + ⋅h,<br />

z + ⋅h⋅k<br />

)<br />

{} 3<br />

{} 3<br />

2<br />

k<br />

k<br />

k<br />

k<br />

k<br />

k<br />

=<br />

f<br />

2<br />

2<br />

2<br />

k<br />

2<br />

1<br />

1<br />

2<br />

2<br />

3⋅<br />

=<br />

{} 3<br />

Iteracja trzecia:<br />

3⋅<br />

z2<br />

− 5<br />

= =<br />

t + 1<br />

2<br />

1 {} 3<br />

( z + ⋅h⋅k<br />

) − 5 3⋅( 2,447619+<br />

0,5⋅0,500⋅0,585714)<br />

2<br />

t<br />

2<br />

+<br />

2<br />

1<br />

2<br />

1<br />

⋅h<br />

+ 1<br />

3⋅2,447619−5<br />

3,000+<br />

1<br />

4 <br />

=<br />

= 0,585714<br />

3,000+<br />

0,5⋅0,500+<br />

1<br />

−5<br />

= 0,654622<br />

, (28)<br />

z = z + h⋅k<br />

= 2,447619 + 0,500⋅0,654622<br />

2,774930 . (29)<br />

3 2 2<br />

=<br />

{} 1<br />

= f ( t , z )<br />

1<br />

1<br />

( t + ⋅h,<br />

z + ⋅h⋅k<br />

)<br />

{} 1<br />

{} 1<br />

2<br />

1<br />

1<br />

( t + ⋅h,<br />

z + ⋅h⋅k<br />

)<br />

{} 1<br />

{} 1<br />

3<br />

=<br />

=<br />

k<br />

f<br />

f<br />

( t + h,<br />

z + h⋅k<br />

)<br />

{} 1<br />

{} 1<br />

4<br />

0<br />

0<br />

=<br />

f<br />

2<br />

2<br />

0<br />

0<br />

0<br />

1<br />

0<br />

=<br />

k<br />

2<br />

2<br />

1<br />

z = z<br />

0<br />

1<br />

2<br />

3<br />

+ h⋅<br />

<strong>Metod</strong>a Rungego – Kutty IV rzędu<br />

0<br />

0<br />

3⋅<br />

=<br />

3⋅<br />

=<br />

3⋅<br />

=<br />

2,000000 + 0,500 ⋅<br />

Iteracja pierwsza:<br />

3⋅<br />

z0<br />

− 5<br />

= =<br />

t + 1<br />

0<br />

1 {} 1<br />

( z + ⋅h⋅k<br />

) − 5 3⋅( 2,000000+<br />

0,5⋅0,500⋅0,333333)<br />

0<br />

t<br />

⋅h<br />

+ 1<br />

0<br />

1 {} 1<br />

( z + ⋅h⋅k<br />

) − 5 3⋅( 2,000000+<br />

0,5⋅0,500⋅0,384615)<br />

0<br />

t<br />

⋅h<br />

+ 1<br />

0<br />

{} 1<br />

( z + h⋅k<br />

) − 5 3⋅( 2,000000+<br />

0,500⋅0,396450)<br />

0<br />

t<br />

0<br />

+<br />

+<br />

2<br />

2<br />

1<br />

2<br />

1<br />

2<br />

3<br />

+ h + 1<br />

1<br />

2<br />

3⋅2,000000−5<br />

2,000+<br />

1<br />

1 {} 1 1 { 1} 1 { 1} 1 { 1}<br />

( ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

)<br />

6<br />

1<br />

=<br />

=<br />

=<br />

= 0,333333<br />

2,000+<br />

0,5⋅0,500+<br />

1<br />

2,000+<br />

0,5⋅0,500+<br />

1<br />

2,000+<br />

0,500+<br />

1<br />

−5<br />

1<br />

( ⋅0,333333+<br />

1⋅0,384615+<br />

1⋅0,396450+<br />

1⋅0,455621) = 2, 195924<br />

6<br />

{} 2<br />

= f ( t , z )<br />

1<br />

1<br />

( t + ⋅ h,<br />

z + ⋅ h⋅<br />

k )<br />

{} 2<br />

{} 2<br />

2<br />

1<br />

1<br />

( t + ⋅ h,<br />

z + ⋅ h⋅<br />

k )<br />

{} 2<br />

{} 2<br />

3<br />

=<br />

=<br />

k<br />

( t + h,<br />

z + h⋅<br />

k )<br />

{} 2<br />

{} 2<br />

4<br />

f<br />

f<br />

1<br />

1<br />

=<br />

f<br />

2<br />

2<br />

1<br />

1<br />

1<br />

1<br />

1<br />

=<br />

2<br />

2<br />

k<br />

0<br />

1<br />

z = z<br />

1<br />

2<br />

3<br />

+ h⋅<br />

1<br />

1<br />

3⋅<br />

=<br />

3⋅<br />

=<br />

3⋅<br />

=<br />

2,195924 + 0,500 ⋅<br />

3<br />

2<br />

3<br />

3<br />

Iteracja druga:<br />

3⋅<br />

z1<br />

− 5<br />

= =<br />

t + 1<br />

3<br />

3<br />

6<br />

1<br />

1 {} 2<br />

( z + ⋅ h⋅<br />

k ) − 5 3⋅( 2,195924+<br />

0,5⋅0,500⋅0,453649)<br />

1<br />

⋅ h + 1<br />

1<br />

1 {} 2<br />

( z + ⋅ h⋅<br />

k ) − 5 3⋅( 2,195924+<br />

0,5⋅0,500⋅0,514135)<br />

1<br />

⋅ h + 1<br />

1<br />

{} 2<br />

( z + h⋅k<br />

) − 5 3⋅( 2,195924+<br />

0,500⋅0,526233)<br />

1<br />

t<br />

t<br />

1<br />

2<br />

+<br />

2<br />

+<br />

1<br />

2<br />

1<br />

2<br />

3<br />

t + h + 1<br />

1<br />

2<br />

4<br />

3⋅2,195924−5<br />

2,500+<br />

1<br />

1 {} 1 1 { 1} 1 { 1} 1 { 1}<br />

( ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

)<br />

6<br />

1<br />

=<br />

=<br />

=<br />

6<br />

=<br />

= 0,453649<br />

2,500+<br />

0,5⋅0,500+<br />

1<br />

2,500+<br />

0,5⋅0,500+<br />

1<br />

2,500+<br />

0,500+<br />

1<br />

−5<br />

1<br />

( ⋅0,453649+<br />

1⋅0,514135+<br />

1⋅0,526233+<br />

1⋅0,594280) = 2, 456646<br />

6<br />

{} 3<br />

= f ( t , z )<br />

1<br />

1<br />

( t + ⋅h,<br />

z + ⋅h⋅k<br />

)<br />

{} 3<br />

{} 3<br />

2<br />

1<br />

1<br />

( t + ⋅h,<br />

z + ⋅h⋅k<br />

)<br />

{} 3<br />

{} 3<br />

3<br />

=<br />

=<br />

k<br />

( t + h,<br />

z + h⋅k<br />

)<br />

{} 3<br />

{} 3<br />

4<br />

f<br />

f<br />

2<br />

2<br />

=<br />

f<br />

2<br />

2<br />

2<br />

2<br />

2<br />

2<br />

k<br />

2<br />

2<br />

1<br />

1<br />

2<br />

3<br />

2<br />

2<br />

3⋅<br />

=<br />

3⋅<br />

=<br />

3⋅<br />

=<br />

3<br />

2<br />

3<br />

3<br />

3<br />

Iteracja trzecia:<br />

3⋅<br />

z2<br />

− 5<br />

= =<br />

t + 1<br />

3<br />

6<br />

4<br />

2<br />

1 {} 3<br />

( z + ⋅h⋅k<br />

) − 5 3⋅( 2,456646+<br />

0,5⋅0,500⋅0,592484)<br />

2<br />

⋅h<br />

+ 1<br />

2<br />

1 {} 3<br />

( z + ⋅h⋅k<br />

) − 5 3⋅( 2,456646+<br />

0,5⋅0,500⋅0,662188)<br />

2<br />

⋅h<br />

+ 1<br />

2<br />

{} 3<br />

( z + h⋅k<br />

) − 5 3⋅( 2,456646+<br />

0,500⋅0,674489)<br />

2<br />

t<br />

t<br />

t<br />

2<br />

+<br />

+<br />

2<br />

2<br />

1<br />

2<br />

1<br />

2<br />

3<br />

+ h + 1<br />

1<br />

2<br />

3⋅2,456646−5<br />

3,000+<br />

1<br />

=<br />

=<br />

=<br />

6<br />

=<br />

= 0,592484<br />

3,000+<br />

0,5⋅0,500+<br />

1<br />

3,000+<br />

0,5⋅0,500+<br />

1<br />

3,000+<br />

0,500+<br />

1<br />

−5<br />

−5<br />

−5<br />

= 0,384615<br />

= 0,396450<br />

= 0,455621<br />

−5<br />

−5<br />

, (30)<br />

. (31)<br />

= 0,514135<br />

= 0,526233<br />

= 0,594280<br />

−5<br />

−5<br />

, (32)<br />

. (33)<br />

= 0,662188<br />

= 0,674489<br />

= 0,751483<br />

, (34)


z = z<br />

1<br />

=<br />

0<br />

+ h⋅<br />

2,456646 + 0,500 ⋅<br />

Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

1 {} 1 1 { 1} 1 { 1} 1 { 1}<br />

( ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

+ ⋅k<br />

) =<br />

6<br />

1<br />

1<br />

( ⋅0,592484+<br />

1⋅0,662188+<br />

1⋅0,674489+<br />

1⋅0,751483) = 2, 791423<br />

6<br />

3<br />

2<br />

3<br />

3<br />

3<br />

3<br />

6<br />

4<br />

6<br />

. (35)<br />

W tablicach 1 i 2 zestawiono błąd bezwzględny i błąd względny procentowy popełnione przy obli<strong>cz</strong>aniu<br />

wartości funkcji z () t w punkcie t = 3, 500 przedstawionymi powyżej metodami przy różnych<br />

długościach kroku ∆ t . Wartość rozwiązania anality<strong>cz</strong>nego w tym punkcie, użyta do wyzna<strong>cz</strong>enia<br />

błędów bezwzględnego (błąd 1) i względnego procentowego (błąd 2) przedstawionych w kolumnach<br />

4 i 5 tablicy, jest równa z ( 3 ,500) = 2, 791667<br />

ść<br />

.<br />

Tablica 1. Błąd rozwiązania przybliżonego w zależności od długości kroku obli<strong>cz</strong>eń.<br />

Krok <strong>Metod</strong>a Wartość Błąd 1 Błąd 2 [%] Lof<br />

Euler 2,6488<strong>10</strong> 0,142857 5,117265 3<br />

0,5000 Runge-Kutta II 2,774930 0,016737 0,599534 6<br />

Runge-Kutta IV 2,791423 0,000244 0,008740 12<br />

0,0500<br />

0,0050<br />

0,0005<br />

Euler 2,773488 0,018178 0,651160 30<br />

Runge-Kutta II 2,791455 0,000212 0,007594 60<br />

Runge-Kutta IV 2,791667 0,000000 0,000001 120<br />

Euler 2,789798 0,001869 0,066953 300<br />

Runge-Kutta II 2,791665 0,000002 0,000078 600<br />

Runge-Kutta IV 2,791667 0,000000 0,000000 1200<br />

Euler 2,791479 0,000187 0,006714 3000<br />

Runge-Kutta II 2,791667 0,000000 0,000000 6000<br />

Runge-Kutta IV 2,791667 0,000000 0,000000 12000<br />

W ostatniej kolumnie tablicy 1 (Lof) przedstawiono li<strong>cz</strong>bę obli<strong>cz</strong>eń wartości funkcji stojącej po<br />

prawej stronie równania (15) konie<strong>cz</strong>nych do wyzna<strong>cz</strong>enia rozwiązania zapisanego w kolumnie<br />

trzeciej.<br />

Jak wynika z powyższej tablicy dziesięciokrotne zmniejszenie długości kroku całkowania powoduje<br />

zmniejszenie błędu względnego rozwiązania w metodzie Eulera około dziesięć razy, w metodzie<br />

Rungego – Kutty II rzędu około sto razy i w metodzie Rungego – Kutty IV rzędu około dziesięć tysięcy<br />

razy. Jest to zgodne z stwierdzeniem doty<strong>cz</strong>ącym rzędu każdej z rozważanych metod, zawartym<br />

na stronie drugiej.<br />

Wyzna<strong>cz</strong>enie wartości rozwiązania przybliżonego w kolejnym punkcie wymaga jednokrotnego obli<strong>cz</strong>enia<br />

prawej strony równania (2) w wypadku stosowania metody Eulera, dwukrotnego dla metody<br />

Rungego – Kutty II rzędu i <strong>cz</strong>terokrotnego dla metody Rungego – Kutty IV rzędu. W realnych<br />

zadaniach obli<strong>cz</strong>anie prawej strony równania (2) jest najbardziej <strong>cz</strong>asochłonną <strong>cz</strong>ynnością w każdej<br />

iteracji. Wobec tego, aby metoda Rungego – Kutty II rzędu była konkurencyjna w stosunku do metody<br />

Eulera, musi dawać wyniki takiej samej dokładności przy dwukrotnie dłuższym kroku obli<strong>cz</strong>eń,<br />

a metoda Rungego – Kutty IV rzędu przy <strong>cz</strong>terokrotnie dłuższym. Jak widać z tablicy 1 (wiersze<br />

11, 6 i 4) warunki te są spełnione z naddatkiem, gdyż uzyskanie wyniku porównywalnego z<br />

wynikiem uzyskanym w trzech krokach metodą Rungego – Kutty IV rzędu (wiersz <strong>cz</strong>warty tablicy)<br />

kosztem dwunastokrotnego obli<strong>cz</strong>enia prawej strony (15) wymaga wykonania około 30 kroków metodą<br />

Rungego – Kutty II rzędu (wiersz szósty tablicy) <strong>cz</strong>yli sześćdziesięciokrotnego obli<strong>cz</strong>enia<br />

prawej strony (15) i 3000 kroków metodą Eulera (wiersz jedenasty tablicy) <strong>cz</strong>yli obli<strong>cz</strong>enia prawej<br />

strony (15) trzy tysiące razy. Tak więc, spośród trzech prezentowanych metod metoda Rungego –<br />

Kutty IV rzędu jest najbardziej efektywna w zastosowaniach prakty<strong>cz</strong>nych.<br />

5


Michał Pazdanowski<br />

<strong>Instytut</strong> Technologii Informacyjnych w Inżynierii Lądowej<br />

Wydział Inżynierii Lądowej<br />

Politechnika Krakowska<br />

8<br />

7<br />

6<br />

e<br />

rk2<br />

rk4<br />

5<br />

an<br />

4<br />

3<br />

2<br />

2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7<br />

Rys. 1 Rozwiązanie problemu po<strong>cz</strong>ątkowego (15), (16) w przedziale metodami Eulera (e), Rungego<br />

– Kutty II rzędu (rk2) i Rungego – Kutty IV rzędu (rk4) z krokiem . Dla porównania na<br />

wykresie naniesiono również wartości anality<strong>cz</strong>ne rozwiązania (an).<br />

W metodach wielokrokowych typu Adamsa – Bashforda i Adamsa – Moultona<br />

t<br />

6

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!