ODR metody Runge-Kutta Teorie (velmi stručný výběr z přednášek) Úloha s počátečními podmínkami (Cauchyova) 1 řádu Hledáme aprox řešení Y(x) soustavy obyčejných diferenciálních rovnic 1 řádu kde Y(x) = Y (x) = F(x, Y(x)) s počáteční podmínkou Y(x (0) ) = Y (0), (1) y 1 (x) y 2 (x) y n (x), Y (x) = y 1(x) y 2(x) y n(x), F(x, Y) = f 1 (x, y 1, y 2,, y n ) f 2 (x, y 1, y 2,, y n ) f n (x, y 1, y 2,, y n ) Explicitní metody typu Runge-Kutta - numerické metody pro hledání aproximace řešení pomocí explicitních vzorců (není potřeba řešit žádné rovnice) Eulerova metoda Nejjednodušší a nejméně přesná metoda (prvního řádu přesnosti) je Eulerova metoda, která extrapoluje výslednou hodnotu v každém intervalu pomocí tečny ve výchozím bodě intervalu: pro i = 0, 1, 2, 1 spočtěte derivaci K vektorové funkce Y jako K = F(x (i), Y (i) ) 2 spočtěte Y (i+1) = Y (i) + h K Collatzova metoda Příkladem metody typu Runge-Kutta druhého řádu (s přesností druhého řádu) je Collatzova metoda Nejprve se použije Eulerova metoda s polovičním krokem k odhadu řešení uprostřed intervalu Potom se určí derivace v tomto prostředním bodě, a ta se použije ve výchozím bodě intervalu k odhadu výsledné hodnoty na jeho konci Prostřední bod je jen pomocný, slouží pouze k odhadu správného směru tečny 1 c Certik
pro i = 0, 1, 2, 1 spočtěte pomocný prostřední bod [x p, Y p ] pomocí Eulerovy metody s krokem 1 2 h: K 1 = F(x (i), Y (i) ) x p = x (i) + 1 2 h Y p = Y (i) + 1 2 h K 1 2 určete derivaci K 2 v pomocném bodě [x p, Y p ] jako K 2 = F(x p, Y p ) 3 spočtěte Y (i+1) pomocí derivace v pomocném bodě: Y (i+1) = Y (i) + h K 2 Klasická metoda typu Runge-Kutta čtvrtého řádu (RK4) Toto je nejčastěji používaná metoda typu Runge-Kutta K odhadu správného směru používá tři pomocné body (které slouží pouze k tomuto odhadu a po jeho získání se zahodí) pro i = 0, 1, 2, 1 určete první pomocný bod [x p, Y p ] pomocí Eulerovy metody s krokem 1 2 h: K 1 = F(x (i), Y (i) ) x p = x (i) + 1 2 h Y p = Y (i) + 1 2 h K 1 2 určete druhý pomocný bod [x p, Y q ] pomocí derivace v prvním pomocném bodě [x p, Y p ] a kroku 1 2 h: K 2 = F(x p, Y p ) Y q = Y (i) + 1 2 h K 2 3 určete třetí pomocný bod [x (i+1), Y e ] na konci intervalu, pomocí derivace ve druhém pomocném bodě [x p, Y q ] a kroku h: K 3 = F(x p, Y q ) Y e = Y (i) + h K 3 4 spočtěte Y (i+1) použitím váženého průměru derivací ve výchozím bodě a ve třech pomocných bodech: K 4 = F(x (i+1), Y e ) Y (i+1) = Y (i) + 1 6 h (K 1 + 2K 2 + 2K 3 + K 4 ) 2 c Certik
Příklad 1 - z předcházejícího studijního materiálu, s přidáním metody RK4 Je dána Cauchyova úloha y = y x 2, y(1) = 2 Určete přibližnou hodnotu y(14) pomocí RK4 s délkou kroku h = 02, resp h = 04, a porovnejte její efektivitu s předchozími výsledky shrnutými v prvních čtyřech sloupcích Tabulky 1: přesné řešení, Eulerova metoda s krokem h = 01 a Collatzova metoda s krokem h = 02 k = 0 1: Řešení Výpočet pro h = 02 : x (0) = 1, y (0) = 2 k 1 = y(0) (x (0) ) 2 = 2 1 2 = 2, x p = x (0) + 1 2h = 1 + 01 = 11, y p = y (0) + 1 2 h k 1 = 2 + 01 2 = 22 2: 3: 4: k 2 = y p x 2 = 22 p 11 2 = 18182 y q = y (0) + 1 2 h k 2 = 2 + 01 18182 = 21818 k 3 = y q x 2 = 21818 p 11 2 = 18032 x (1) = x (0) + h = 1 + 02 = 12, y e = y (0) + h k 3 = 2 + 02 18032 = 23606 k 4 = y e (x (1) ) 2 = 23606 12 2 = 16393 y (1) = y (0) + 1 6 h (k 1 + 2k 2 + 2k 3 + k 4 ) = = 2 + 1 30 (2 + 2 18182 + 2 18032 + 16393) = 23627 y(12) se přibližně rovná y (1) = 23627 To je druhá hodnota v pátém sloupci 3 c Certik
k = 1 1: k 1 = y(1) (x (1) ) = 23627 2 12 2 = 16408 x p = x (1) + 1 2h = 12 + 01 = 13 y p = y (1) + 1 2 h k 1 = 23627 + 01 16408 = 25268 2: 3: 4: k 2 = y p x 2 = 25268 p 13 2 = 14952 y q = y (1) + 1 2 h k 2 = 23627 + 01 14952 = 25122 k 3 = y q x 2 = 25122 p 13 2 = 14865 x (2) = x (1) + h = 12 + 02 = 14 y e = y (1) + h k 3 = 23627 + 02 14865 = 26600 k 4 = y e (x (2) ) 2 = 26600 14 2 = 13572 y (2) = y (1) + 1 6 h (k 1 + 2k 2 + 2k 3 + k 4 ) = = 23627 + 1 30 (16408 + 2 14952 + 2 14865 + 13572) = 26614 y(14) se přibližně rovná y (2) = 26614 Poslední dvě hodnoty v pátém sloupci se spočítají analogicky pro k = 2 a k = 3 Stejným postupem pro krok h = 04 získáme hodnoty v posledním sloupci Tabulky 1 Tyto výsledky ukazují, že Collatzovou metodou jsme získali přesnější řešení než Eulerovou metodou, a to i v případě dvojnásobného kroku (což představuje srovnatelnou práci, protože v každém kroku Collatzovy metody musíme počítat derivaci dvakrát) Metoda RK4 vedla k nejlepším výsledkům, a to i v případě použití čtyřnásobného kroku (což představuje srovnatelnou práci, protože v každém kroku RK4 musíme počítat derivaci čtyřikrát) 4 c Certik
přesně h = 01 Euler h = 02 Collatz h = 02 RK4 h = 04 RK4 x (i) y(x (i) ) y (i) y (i) y (i) y (i) 1 20000 20000 20000 20000 20000 11 21903 22000 12 23627 23818 23636 23627 12 25191 25472 14 26614 26979 26628 26614 26617 15 27912 28356 16 29100 29616 29115 29100 17 30190 30773 18 31192 31838 31209 31193 31196 Tabulka 1: Příklad 1 V prvním sloupci jsou hodnoty x, v nichž počítáme přibližné řešení Ve druhém sloupci je přesné řešení, ve třetím je přibližné řešení získané Eulerovou metodou s krokem h = 01, ve čtvrtém jsou výsledky Collatzovy metody s krokem h = 02 a poslední dva sloupce představují přibližné řešení získané metodou RK4 s krokem h = 02, resp h = 04 5 c Certik