Numerické řešení diferenciálních rovnic Omezení: obyčejné (nikoli parciální) diferenciální rovnice, Cauchyho počáteční úloha, pouze jedna diferenciální rovnice 1. řádu 1/1
Numerické řešení diferenciálních rovnic Omezení: obyčejné (nikoli parciální) diferenciální rovnice, Cauchyho počáteční úloha, pouze jedna diferenciální rovnice 1. řádu 1/1 Úloha: Na intervalu x 0, x n máme řešit diferenciální rovnici y (x) = f(x, y(x)) s počáteční podmínkou y(x 0 ) = y 0, kde f je funkce dvou reálných proměnných a y 0 R.
Numerické řešení diferenciálních rovnic Omezení: obyčejné (nikoli parciální) diferenciální rovnice, Cauchyho počáteční úloha, pouze jedna diferenciální rovnice 1. řádu 1/1 Úloha: Na intervalu x 0, x n máme řešit diferenciální rovnici s počáteční podmínkou y (x) = f(x, y(x)) y(x 0 ) = y 0, kde f je funkce dvou reálných proměnných a y 0 R. Poznámka: Pokud f nezávisí na y, tj. f(x, y) = g(x), dostáváme numerickou integraci jako speciální případ řešení diferenciální rovnice y (x) = g(x)
Existence a jednoznačnost řešení Není obecně zaručena: 2/1 Příklad: Uvažujme diferenciální rovnici s počáteční podmínkou: y (x) = 3 y(x), y(0) = 0, kde třetí odmocninu považujeme za reálnou funkci definovanou i pro záporný argument. Má řešení např. y(x) = 0 a y(x) = ± ( 2 3 x) 3 2.
Existence a jednoznačnost řešení Není obecně zaručena: 2/1 Příklad: Uvažujme diferenciální rovnici s počáteční podmínkou: y (x) = 3 y(x), y(0) = 0, kde třetí odmocninu považujeme za reálnou funkci definovanou i pro záporný argument. Má řešení např. y(x) = 0 a y(x) = ± ( 2 3 x) 3 2. Věta: Nechť funkce f je definovaná a spojitá na x 0, x n R (tj. pro všechna x x 0, x n, y R). Nechť je splněna Lipschitzova podmínka L R x x 0, x n y 1, y 2 R : f(x, y 1 ) f(x, y 2 ) L y 1 y 2. Pak řešení naší úlohy na intervalu x 0, x n existuje a je jednoznačné.
Existence a jednoznačnost řešení Není obecně zaručena: 2/1 Příklad: Uvažujme diferenciální rovnici s počáteční podmínkou: y (x) = 3 y(x), y(0) = 0, kde třetí odmocninu považujeme za reálnou funkci definovanou i pro záporný argument. Má řešení např. y(x) = 0 a y(x) = ± ( 2 3 x) 3 2. Věta: Nechť funkce f je definovaná a spojitá na x 0, x n R (tj. pro všechna x x 0, x n, y R). Nechť je splněna Lipschitzova podmínka L R x x 0, x n y 1, y 2 R : f(x, y 1 ) f(x, y 2 ) L y 1 y 2. Pak řešení naší úlohy na intervalu x 0, x n existuje a je jednoznačné. Postačující podmínka: f y spojitá a omezená na x 0, x n R.
Interpretace úlohy a princip řešení Poznámka: Ekvivalentní formulace úlohy: řešení 3/1 y(x) = y 0 + x x 0 f(t, y(t)) dt lze chápat jako integrál (neznámé) funkce g(t) = f(t, y(t)) jedné proměnné nebo křivkový integrál známé funkce f přes (neznámou) křivku s parametrizací (t, y(t)), t x 0, x n.
Interpretace úlohy a princip řešení Poznámka: Ekvivalentní formulace úlohy: řešení 3/1 y(x) = y 0 + x x 0 f(t, y(t)) dt lze chápat jako integrál (neznámé) funkce g(t) = f(t, y(t)) jedné proměnné nebo křivkový integrál známé funkce f přes (neznámou) křivku s parametrizací (t, y(t)), t x 0, x n. Interval x 0, x n rozdělíme na n dílčích intervalů délky h = (x n x 0 )/n. Získáme uzlové body x i = x 0 + ih, i = 0,..., n. Správné hodnoty řešení v uzlových bodech, y(x i ), nahradíme odhady y i. Hodnoty derivace: f i = f(x i, y i ).
Obecný postup řešení Generujeme posloupnost y i, i = 0,..., n. V kroku i + 1 počítáme z odhadů y 0,..., y i odhad y i+1. Přesné řešení: 4/1 y(x i+1 ) y(x i ) = xi+1 x i f(t, y(t)) dt odhadujeme pomocí y i = y i+1 y i xi+1 x i f(t, y(t)) dt. y i+1 = y i + y i. Jednotlivé metody se liší pouze odhadem y i.
Rungovy-Kuttovy metody 1: Eulerova metoda Je zobecněním metody levého odhadu; funkci f(t, y(t)) nahrazujeme její hodnotou f(x i, y i ) v bodě x i 5/1 xi+1 y i = f(x i, y i ) dt = h f(x i, y i ), x i y i+1 = y i + h f(x i, y i ) = y i + h f i.
Rungovy-Kuttovy metody 1: Eulerova metoda Je zobecněním metody levého odhadu; funkci f(t, y(t)) nahrazujeme její hodnotou f(x i, y i ) v bodě x i 5/1 xi+1 y i = f(x i, y i ) dt = h f(x i, y i ), x i y i+1 = y i + h f(x i, y i ) = y i + h f i. Geometrický význam: f i = f(x i, y i ) je směrnice úsečky vedené body (x i, y i ), (x i+1, y i+1 ).
Odhad chyby Taylorův rozvoj funkce y se středem v x 0 vyhodnotíme v bodě x 1 : 6/1 y(x 1 ) = y(x 0 ) + h y (x 0 ) + h2 2 y (ξ), kde ξ x 0, x 1. y(x 1 ) = } y(x 0 ) + h {{ f(x 0, y 0 } ) + h2 2 y (ξ), y 1 y(x 1 ) y 1 = h2 2 y (ξ). Chyba na konci prvního kroku je úměrná h 2. V dalších krocích vycházíme z počáteční podmínky, která není přesná. Přesto lze za jistých podmínek odvodit, že chyba je zhruba úměrná h 2 a počtu kroků n = x n x 0 h. Chyba na konci daného intervalu je úměrná 1 h h2 = h metoda 1. řádu.
Rungovy-Kuttovy metody 2: První modifikace Eulerovy metody Je zobecněním obdélníkové metody; funkci f(t, y(t)) v ní nahradíme opět hodnotou v bodě x i+x i+1 2 = x i + h 2. Jako druhý argument funkce f použijeme výsledek pomocného kroku poloviční délky (Eulerovou metodou): 7/1 η i = y i + h 2 f i. f(t, y(t)) f(x i + h 2, η i) y i = xi+1 x i f(x i + h 2, η i) dt = h f(x i + h 2, η i). Metoda 2. řádu.
Rungovy-Kuttovy metody 3: Druhá modifikace Eulerovy metody (Heunova metoda) Je zobecněním lichoběžníkové metody integrace; funkci f(t, y(t)) nahradíme lineární funkcí, proloženou hodnotami v krajních bodech intervalu: v x i : f i = f(x i, y i ), v x i+1 : neznalost y-ové souřadnice řešíme pomocným krokem (délky h Eulerovou metodou): θ i = y i + h f i. Funkci f(t, y(t)) nahradíme lineární funkcí, jejíž graf prochází body ( xi, f(x i, y i ) ), ( x i+1, f(x i+1, θ i ) ). 8/1 y i = h 2 (f(x i, y i ) + f(x i+1, θ i )). Metoda 2. řádu.
Rungovy-Kuttovy metody 4: Rungova-Kuttova metoda 4. řádu Je zobecněním Simpsonovy metody; nejprve vypočteme pomocné body a hodnoty derivace v nich, 9/1 k i,1 = f(x i, y i ), k i,2 = f(x i + h 2, y i + h 2 k i,1), k i,3 = f(x i + h 2, y i + h 2 k i,2), k i,4 = f(x i + h, y i + h k i,3 ). Integrál nahradíme lineární kombinací těchto hodnot: y i = h 6 (k i,1 + 2k i,2 + 2k i,3 + k i,4 ).
Rungovy-Kuttovy metody 5: Obecné Rungovy-Kuttovy metody Odhadují integrál x i+1 f(t, y(t)) dt z několika hodnot funkce f v bodech, x i získaných z výchozích hodnot x i, y i a pomocných kroků. Tyto hodnoty jsou zkombinovány tak, aby se vykompenzovaly chyby nejnižších řádů. 10/1
Metody Vícekrokové metody 11/1 jednokrokové: využívají xi, yi a fi = f(xi, yi) (např. Rungeovy-Kuttovy),
Metody Vícekrokové metody 11/1 jednokrokové: využívají xi, yi a fi = f(xi, yi) (např. Rungeovy-Kuttovy), vícekrokové: využívají i výsledky předcházejících kroků, tj. xj, yj a f j = f(x j, y j ), j = i, i 1,..., i s + 1 (pro s-krokovou metodu). Vícekrokové metody dovolují zvýšit řád metody bez pomocných kroků. Nicméně k nastartování s-krokové metody potřebujeme s hodnot y 0, y 1,..., y s 1. Ty získáváme startovací metodou (některou z jednokrokových metod).
Adamsovy-Bashforthovy metody (explicitní) 12/1 s hodnotami derivace f i, f i 1,..., f i s+1 v uzlových bodech x i, x i 1,..., x i s+1 proložíme interpolační polynom ϕ i a ten integrujeme místo f(t, y(t)): y i = xi+1 x i ϕ i (t) dt. Není potřeba počítat ϕ i, neboť y i = h s 1 j=0 w j f i j, kde w j jsou předem známé koeficienty. Polynomem aproximujeme derivaci y (t) = f(t, y(t)), nikoli řešení, y(t)!
Pro s = 1: ϕ i = f i je konstantní Eulerova metoda. 13/1
Pro s = 1: ϕ i = f i je konstantní Eulerova metoda. 13/1 Pro s = 2: ϕ i je lineární polynom proložený body (x i, f i ), (x i 1, f i 1 ), y i = xi+1 ϕ i (t) = f i + f i f i 1 h (t x i ) x i ϕ i (t) dt = h f i + h 2 (f i f i 1 ) = h 2 (3f i f i 1 ).
Pro s = 1: ϕ i = f i je konstantní Eulerova metoda. 13/1 Pro s = 2: ϕ i je lineární polynom proložený body (x i, f i ), (x i 1, f i 1 ), Pro s = 3: y i = xi+1 ϕ i (t) = f i + f i f i 1 h (t x i ) x i ϕ i (t) dt = h f i + h 2 (f i f i 1 ) = h 2 (3f i f i 1 ). y i = h 12 (23f i 16f i 1 + 5f i 2 ),
Pro s = 1: ϕ i = f i je konstantní Eulerova metoda. 13/1 Pro s = 2: ϕ i je lineární polynom proložený body (x i, f i ), (x i 1, f i 1 ), Pro s = 3: Pro s = 4: y i = xi+1 ϕ i (t) = f i + f i f i 1 h (t x i ) x i ϕ i (t) dt = h f i + h 2 (f i f i 1 ) = h 2 (3f i f i 1 ). y i = h 12 (23f i 16f i 1 + 5f i 2 ), y i = h 24 (55f i 59f i 1 + 37f i 2 9f i 3 ).
Řád metody je s=počet bodů použitých v aproximaci. 14/1
Řád metody je s=počet bodů použitých v aproximaci. 14/1 Výhoda: jednoduchost
Řád metody je s=počet bodů použitých v aproximaci. 14/1 Výhoda: jednoduchost Nevýhody: různá znaménka koeficientů ( zaokrouhlovací chyby) chyba metody způsobená extrapolací polynomem snaha vyhnout se extrapolaci
Adamsovy-Moultonovy metody (implicitní) Pravou stranu f(t, y(t)) aproximujeme interpolačním polynomem ϕ i proloženým hodnotami f i, f i 1,..., f i s+1 a hodnotou v bodě x i+1, tj. f i+1 = f(x i+1, y i+1 ). 15/1
Adamsovy-Moultonovy metody (implicitní) Pravou stranu f(t, y(t)) aproximujeme interpolačním polynomem ϕ i proloženým hodnotami f i, f i 1,..., f i s+1 a hodnotou v bodě x i+1, tj. f i+1 = f(x i+1, y i+1 ). Opět se redukuje na tvar 15/1 y i+1 y i = y i = h s 1 j= 1 w j f i j, kde w j jsou předem vypočtené koeficienty (zde jiné).
Adamsovy-Moultonovy metody (implicitní) Pravou stranu f(t, y(t)) aproximujeme interpolačním polynomem ϕ i proloženým hodnotami f i, f i 1,..., f i s+1 a hodnotou v bodě x i+1, tj. f i+1 = f(x i+1, y i+1 ). Opět se redukuje na tvar 15/1 y i+1 y i = y i = h s 1 j= 1 w j f i j, kde w j jsou předem vypočtené koeficienty (zde jiné). Dostáváme rovnici y i+1 = y i + h w 1 f(x i+1, y i+1 ) + h s 1 j=0 w j f i j pro neznámou hodnotu y i+1, která je tímto určena implicitně.
Pro s = 1: ϕ i je lineární polynom proložený body (x i, f i ), (x i+1, f i+1 ), tj. 16/1 ϕ i (t) = f i + f i+1 f i h (t x i ). xi+1 y i = ϕ i (t) dt = h x i 2 (f i+1 + f i ), po dosazení f i+1 = f(x i+1, y i+1 ) y i+1 y i = h 2 ( f(xi+1, y i+1 ) + f i ).
Pro s = 1: ϕ i je lineární polynom proložený body (x i, f i ), (x i+1, f i+1 ), tj. 16/1 ϕ i (t) = f i + f i+1 f i h (t x i ). xi+1 y i = ϕ i (t) dt = h x i 2 (f i+1 + f i ), po dosazení f i+1 = f(x i+1, y i+1 ) y i+1 y i = h 2 ( f(xi+1, y i+1 ) + f i ). Pro s = 2: y i = h 12 ( 5f(xi+1, y i+1 ) + 8f i f i 1 ),
Pro s = 1: ϕ i je lineární polynom proložený body (x i, f i ), (x i+1, f i+1 ), tj. 16/1 ϕ i (t) = f i + f i+1 f i (t x i ). h xi+1 y i = ϕ i (t) dt = h x i 2 (f i+1 + f i ), po dosazení f i+1 = f(x i+1, y i+1 ) y i+1 y i = h 2 ( f(xi+1, y i+1 ) + f i ). Pro s = 2: y i = h 12 ( 5f(xi+1, y i+1 ) + 8f i f i 1 ), Pro s = 3: y i = h 24 ( 9f(xi+1, y i+1 ) + 19f i 5f i 1 + f i 2 ).
Řád metody je s + 1=počet bodů použitých v aproximaci. 17/1
Řád metody je s + 1=počet bodů použitých v aproximaci. 17/1 Výhoda: vyšší přesnost
Řád metody je s + 1=počet bodů použitých v aproximaci. 17/1 Výhoda: vyšší přesnost Nevýhody: obtížné řešení implicitní rovnice (zřídka možné exaktně, numerické řešení zvyšuje složitost) i chyba metody způsobená interpolací polynomem může být značná
Metody prediktor-korektor Základem je korektor, což je některá z implicitních metod, v níž se příslušná rovnice řeší numericky. V j-té iteraci z ní vypočítáme odhad y i+1,j hodnoty y i+1, přičemž na pravé straně použijeme odhad y i+1,j 1 získaný v předchozí iteraci: 18/1 y i+1,j = y i + h s 1 j=0 w j f i j + h w 1 f(x i+1, y i+1,j 1 ). Počáteční odhad y i+1,0 najdeme z výsledků předchozích kroků (event. z počátečních podmínek) jinou metodou, zvanou prediktor, např. některou z explicitních metod.
Řídicí mechanismus P = prediktor (Predictor) C = korektor (Corrector) E = vyhodnocení derivace (Evaluation) 19/1 Nejčastější možnosti: cyklus korektoru provádět tak dlouho, dokud není rozdíl yi+1,j yi+1,j 1 dostatečně malý, konstantní počet k opakování korektoru, P(EC)kE, jediný průchod korektorem, PECE.
Adamsovy metody Prediktor: Adamsova-Bashforthova metoda Korektor: Adamsova-Moultonova metoda 20/1 Příklad: Nejjednodušší varianta Adamsovy metody, s = 1: Prediktor: Eulerova metoda (1. řádu) y i+1,0 = y i + h f i. Korektor: Adamsova-Moultonova metoda 2. řádu y i+1,j+1 = y i + h 2 ( fi + f(x i+1, y i+1,j ) ).
Adamsovy metody Prediktor: Adamsova-Bashforthova metoda Korektor: Adamsova-Moultonova metoda 20/1 Příklad: Nejjednodušší varianta Adamsovy metody, s = 1: Prediktor: Eulerova metoda (1. řádu) y i+1,0 = y i + h f i. Korektor: Adamsova-Moultonova metoda 2. řádu y i+1,j+1 = y i + h 2 ( fi + f(x i+1, y i+1,j ) ). Volba startovací metody (jejího řádu)
Adamsovy metody Prediktor: Adamsova-Bashforthova metoda Korektor: Adamsova-Moultonova metoda 20/1 Příklad: Nejjednodušší varianta Adamsovy metody, s = 1: Prediktor: Eulerova metoda (1. řádu) y i+1,0 = y i + h f i. Korektor: Adamsova-Moultonova metoda 2. řádu y i+1,j+1 = y i + h 2 ( fi + f(x i+1, y i+1,j ) ). Volba startovací metody (jejího řádu) Volba kroku
Richardsonova extrapolace při řešení diferenciálních rovnic ỹ(x, h)... numerické řešení v bodě x, získané s krokem h ỹ(x, 2h)... numerické řešení v bodě x, získané s krokem 2h 21/1 (zde q = 2) Chyba odhadu ỹ(x, h) bude zhruba 2 p menší než chyba odhadu ỹ(x, 2h) odhad chyby výsledku ỹ(x, h) metodou polovičního kroku: ỹ(x, h) y(x) 1 2 p (ỹ(x, 2h) ỹ(x, h)). 1 Odhad výsledku zpřesněný Richardsonovou extrapolací: y(x) ỹ(x, h) + 1 2 p (ỹ(x, h) ỹ(x, 2h)). 1
Richardsonova extrapolace při řešení diferenciálních rovnic ỹ(x, h)... numerické řešení v bodě x, získané s krokem h ỹ(x, 2h)... numerické řešení v bodě x, získané s krokem 2h 21/1 (zde q = 2) Chyba odhadu ỹ(x, h) bude zhruba 2 p menší než chyba odhadu ỹ(x, 2h) odhad chyby výsledku ỹ(x, h) metodou polovičního kroku: ỹ(x, h) y(x) 1 2 p (ỹ(x, 2h) ỹ(x, h)). 1 Odhad výsledku zpřesněný Richardsonovou extrapolací: Richardsonova extrapolace pasivní aktivní y(x) ỹ(x, h) + 1 2 p (ỹ(x, h) ỹ(x, 2h)). 1