Numerické řešení obyčejných diferenciálních rovnic

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

V numerické matematice je numerické řešení obyčejných diferenciálních rovnic postup, kterým můžeme získat přibližné řešení obyčejných diferenciálních rovnic. Používá se v případech, kdy by bylo nalezení přesného (analytického) řešení náročné nebo v případech, kdy analytické řešení nelze najít.

Diferenciální rovnice a její počáteční podmínky bývají často uváděny v tomto tvaru:

y'(t) = f(t,y)
y(t_0) = y_0

Metody řešení[editovat | editovat zdroj]

Funkce f(t,y) (někdy se nazývá stavová rovnice) může být obecně velmi komplikovaná, proto je nutné řešit rovnici numericky. V takovém případě probíhá řešení v diskrétních časových krocích \Delta t:

y(t+\Delta t) = y(t) + D(t,y) \Delta t

D(t,y) je funkce (někdy též směrová funkce), která se snaží aproximovat y'(t) tak, aby y(t+\Delta t) bylo co nejpřesnější.

Eulerova metoda[editovat | editovat zdroj]

(Více viz Eulerova metoda)

Existuje více metod, jak v daném čase získat co nejlepší aproximaci derivace, nejjednodušší je Eulerova metoda:

D(t,y) = f(t,y)

Metody Runge-Kutta[editovat | editovat zdroj]

Obecně lze metody Runge-Kutta zapsat následovně:

y_{n+1} = y_n + h \sum_{i=1}^{p} w_i k_i
k_i = f(t + \alpha_i h, \, y_n + h \sum_{j=1}^{i-1} \beta_{ij} k_j)

Koeficienty u těchto metod jsou vypočteny tak, aby metoda řádu p odpovídala Taylorovu polynomu funkce y(t) stejného řádu. (Eulerova metoda je vlastně metodou prvního řádu.)

Často se používá 4bodová metoda Runge-Kutta (RK4), která je čtvrtého řádu.

 k_1 = f \left( t_n, y_n \right)
 k_2 = f \left( t_n + {h \over 2}, y_n + {h \over 2} k_1 \right)
 k_3 = f \left( t_n + {h \over 2}, y_n + {h \over 2} k_2 \right)
 k_4 = f \left( t_n + h, y_n + hk_3 \right)
 y_{n+1} = y_n + {h \over 6} (k_1 + 2k_2 + 2k_3 + k_4)
(Korespondence různých způsobů zápisu: h = \Delta t; t_n = n \Delta t; y_n = y(t_n); D(t,y) = (k_1+2k_2+2k_3+k_4)/6. Korespondence s obecným vzorcem: k_1 = k_4 = 1/6; k_2 = k_3 = 1/3; \alpha_1 = \beta_{31} = \beta_{41} = \beta_{42} = 0; \alpha_2 = \alpha_3 = \beta_{21} = \beta_{32} = 1/2; \alpha_4 = \beta_{43} = 1.)

Vícekrokové metody[editovat | editovat zdroj]

U vícekrokových metod je hodnota y_{n+1} vypočtena z předchozích hodnot y_{n-i} (respektive f_{n-i}, i = 0 ... k) proložených interpolačním polynomem. Řád metody zde odpovídá řádu interpolačního polynomu. (Eulerova metoda je v podstatě jednokrokovou metodou.)

Obecnou vícekrokovou metodu lze zapsat následovně:

y_{n+1} = \sum_{i=0}^{r} \alpha_i y_{n-i} + h \sum_{j=-1}^{s} \beta_j f_{n-j}

Explicitní metody[editovat | editovat zdroj]

Pokud je \beta_{-1} = 0, lze hodnotu y_{n+1} určit z r+1 předchozích hodnot y_n (respektive z s+1 předchozích hodnot f_n) a jedná se o metodu explicitní.

Příklad 1, explicitní metoda Adams-Bashford druhého řádu:

y_{n+1} = y_n + h\left( {3\over 2} f(t_n, y_n) - {1 \over 2} f(t_{n-1}, y_{n-1})\right)
(Korespondence s obecným vzorcem: r = 0; \alpha_0 = 1; s = 1; \beta_{-1} = 0; \beta_0 = 3/2; \beta_1 = -1/2.)

Příklad 2, explicitní metoda Adams-Bashford čtvrtého řádu:

y_{n+1} = y_n + \frac{h}{24} \left( 55 f_n - 59 f_{n-1} + 37 f_{n-2} - 9 f_{n-3} \right)

Implicitní metody[editovat | editovat zdroj]

Pokud je \beta_{-1} různé od nuly, je pro výpočet y_{n+1} nutná znalost f_{n+1} a jedná se o metodu implicitní.

Příklad, implicitní metoda Adams-Moulton čtvrtého řádu:

y_{n+1} = y_n + \frac{h}{24} \left( 9 f_{n+1} + 19 f_n - 5 f_{n-1} + f_{n-2} \right)

Metody prediktor-korektor[editovat | editovat zdroj]

Metody prediktor-korektor jsou sloučením explicitních a implicitních metod. Nejprve je použita explicitní metoda pro odhad nového y_{n+1}. V tomto bodě je vypočtena derivace f_{n+1}, která je následovně použita v implicitní metodě pro výpočet přesnější aproximace y_{n+1}.

Související články[editovat | editovat zdroj]