Obyčejné diferenciální rovnice (ODE) Obyčejné diferenciální rovnice N tého řádu převádíme na soustavy N diferenciálních rovnic prvního řádu. V rovnici f x, y, y ', y '',, y N =gx se substituují y '=z 1, y ''=z 2,..., y N 1 =z N 1 a máme tedy soustavu rovnic y ' = z 1 z 1 ' = z 2 z 2 ' = z 3 = f x, y, z 1, z 2,, z N 1, z' N 1 = g x, poslední rovnici obvykle lze psát ve tvaru z ' N 1 = gx, y, z 1, z 2,, z N 1 lze celkově zapsat jako a soustavu y = z 0 z 0 ' = z 1 z 1 ' = z 2 z 2 ' = z 3 = z N 1 ' = gx,z 0, z 1, z 2,,z N 1. K jednoznačnému řešení musí být známo jsou zadány se řešení ODE dělí na: N podmínek. Podle toho, ve kterých bodech Počáteční problém všech N podmínek je zadáno v jednom bodu, sleduje se přímo řešení vycházející z tohoto bodu, příkladem může být rovnice harmonického oscilátoru a k ní zadané počáteční podmínky v čase t=0, d 2 yt d t 2 =yt, y0=0, y'0=1 Okrajový problém ne všechny podmínky jsou zadány v jednom bodě, často jsou podmínky zadány na dvou koncích intervalu, na kterém řešíme, například rovnice popisující pohyb hmotného bodu v gravitačním poli a podmínky y x 0 =0, yx n =0 a v0=v 0 popisující úlohu, kterou řeší střelec z děla, když hledá elevační úhel takový, aby se z bodu x 0 trefil střelou s počáteční rychlostí v 0 do bodu x n v 0 x 0 x N
Runge-Kuttovy medoty pro řešení počátečního problému Budeme se zabývat odvozeními pouze pro 1 diferenciální rovnici 1. řádu (vzorce zobecněné na systém diferenciálních rovnic 1. řádu budou uvedeny na konci kapitol). Eulerova metoda d y Řešíme tedy rovnici d x = f x, y s počáteční podmínkou y x =y 0 0. Přibližné řešení v bodě x n1 nalezneme pomocí rozvoje funkce y x do Taylorovy řady v bodě x n yx n1 =yx n h yx n h y 'x n =yx n hfx n Nejnižší zanedbaný člen určuje odhad chyby metody, chyba v každém kroku je tedy úměrná h 2, a protože počet kroků na daném intervalu je nepřímo úměrný h, je celková chyba metody úměrná h. Eulerova metoda je tedy 1. řádu přesnosti, tedy poměrně málo přesná, a proto se v praxi nepoužívá (k dobré přesnosti je třeba velkého množství kroků). Postup při použití Eulerovy metody je znázorněn na následujících obrázcích.
lim yx K Eulerově metodě lze dospět i ze vztahu d y n h y x n d x = h 0 = f x, y. h Informace o konvergenci metody ve slidech, postačující podmínka konvergence je, aby funkce f měla na oblasti, kde hledáme řešení omezenou parciální derivaci podle y. Metody vyššího řádu, které by využívaly Taylorova rozvoje se v praxi nepoužívají, protože by byly potřeba vyšší derivace y a tedy parciální derivace f podle x a y. Taylorův rozvoj je ale důležitý i pro odvození dalších metod. Princip Runge-Kuttových metod Jsou v praxi často používané, a protože pro výpočet y n1 využívají pouze předchozí bod x n a nevyužívají body x k, y k, kde kn, říká se jim metody jednokrokové. Runge Kuttovy metody jsou založené na postupném zpřesňování hodnot ležících mezi x n a x n1. Obecný výpočetní vzorec metody má tvar y n1 h RK x n,h, kde x n,h= p 1 k 1 h p 2 k 2 h p r k r h. Vzorec je v podstatě hodně podobný Eulerově metodě, pouze místo f x n používáme funkci RK x n,h, která je defakto lineární kombinací funkčních hodnot funkce f. Pro k 1 h,, k r h totiž platí vztahy k 1 h = f x n k 2 h = f x n 2 h 21 h k 1. = k r h = f [ x n r h h r1 k 1 r2 k 2 rr 1 k r 1 ] Volbou r=1 dostaneme přímo Eulerovu metodu. Pro r 4 se řád metody může rovnat r. Pro konstrukci medoty 5. řádu je už třeba r=6. Konstrukce RK metody 2. řád u Vyjdeme opět jako u Eulerovy metody z Taylorova rozvoje funkce y x y x n1 = y x n h= y x n h y ' x n h2 2 y ' ' x n= y n h f x n h2 2 = = y n h f x n h2 2 f x x n f y y x x n hfx n h2 2 f x f f y x n d f d x x n =
Tentokrát jsme použili o jeden člen rozvoje více, abychom byli schopni dopočítat konstanty p 1, p 2, 2, 21 používané v RK metodě. V Taylorově rozvoji je tedy y n1 h f x n h2 f 2 x f f y x n y n1 h RK x n,h= v RK metodě h p 1 f x n p 2 f x n 2 h 21 h f x n. Abychom dostali v RK metodě rovněž členy s h 2, provedeme také Taylorův rozvoj funkce RK x n, h= RK x n,0h RK ' x n,0. Vyjádřením tohoto rozvoje dostaneme p 1 f x n p 2 f x n h p 2 2 f x 21 f f y x n. Porovnáním s Taylorovým rozvojem funkce y pro jednotlivé mocniny h pak dostaneme soustavu rovnic pro neznámé koeficienty RK metody: y n h f h2 2 f x f f y y n h p 1 p 2 f h 2 p 2 2 f x 21 f f y h : p 1 p 2 =1 h 2 f x : p 2 2 = 1 2 h 2 f y : p 2 21 = 1 2 Tato soustava má nekonečně mnoho řešení, v RK metodách se však používají jen dvě z nich: 2 =1, 21 =1, p 1 = p 2 =, je analogická lichoběžníkové metodě integrace k 1 = f x n, k 2 = f x n h h f x n 1 h 2 k 1 k 2 2 = 21 = 1 2, p =0, p 1 2 =, je analogická obdélníkové metodě integrace k 2 = f x n h 2 h 2 f x n 1 h k Runge Kuttova metoda 4. řádu Nejčastěji se při výpočtech používá RK metoda 4. řádu, v jednom kroku se používá k 1 = f x n k 2 = f x h n 2, y h n 2 k 3 = f x h n 2, y h n 2 k 2 k 4 = f x n h h k
y n1 h 6 k 1 2 k 2 2 k 3 k. Chyba v jednom kroku je řádu h 5, chyba metody v zadaném intervalu se zvětšuje lineárně s počtem kroků, který je nepřímo úměrný h, a tedy celková chyba na intervalu je řádu h 4. Odhad chyby a automatická volba kroku Existují 2 metody pro odhad chyby, který se používá při automatické volbě kroku. Srovnání výsledků 2 kroků o délce h s výsledkem jednoho kroku o délce 2 h Srovnání výsledků 2 RK metod různého řádu Různá délka kroku Odhad chyby je =y h y 2 h. Postup při automatické volbě kroku je následující: požadovaná maximální lokální chyba je 0 je li 0, krok přijmeme a v následujícím kroku zvětšíme h, h'=s h 5 0, kde S 0.9, h ' obvykle omezíme např. h' 4 h je li 0, krok nepřijmeme, ale opakujeme ho s h'=s h 4 0 při přijetí výsledku je možné ho zpřesnit použitím vztahu yx2 h= 16 15 y 1 h x2 h 15 y 2 hx2 h, tím získáme metodu 5. řádu přesnosti, tedy o řád vyšší Srovnání výsledků dvou RK metod (tzv. Embedded RK metody) Někdy se jim také říká Runge Kutta Fehlbergovy. Pro metodu 5. řádu přesnosti např. máme vztah y n1 c 1 k 1 c 2 k 2 c 3 k 3 c 4 k 4 c 5 k 5 c 6. Jednotlivá c lze volit i tak, že dostaneme metodu 4. řádu y ' n1 a 1 k 1 a 2 k 2 a 3 k 3 a 4 k 4 a 5 k 5 a 6. 6 Pak je odhad chyby dán jako 1 y ' n1 = c i a i k i. i=1 Spojité RK metody se používají pokud potřebujeme poměrně přesně znát hodnoty y i v bodech mezi y n a y n1 a nepostačuje nám obyčejná interpolace (více informací ve slidech a v Numerical recipies). Věty o lokálních a globálních chybách RK metod viz. slidy.
Vlastnosti RK metod samostartující robustní a odolné dostupné v numerických knihovnách mnoho vyčíslení funkce f (někdy pomalé) nehodí se pro stiff rovnice Pokud je funkce f nespojitá, můžeme nespojitost ignorovat a spolehnout se na automatickou volbu kroku, nebo nespojitost nalézt, výpočet v tomto bodě ukončit a začít opět za ním. O konzistentnosti, regulárnosti a konvergenci obecně viz. slidy. Zaokrouhlovací chyby jsou větší při volbě menšího h, a proto existuje pro volbu h optimum. Pokud použijeme příliš malé h může se i stát, že y n y n1 y n, ačkoliv to ve skutečnosti neplatí. Příklady v PASCALU ODE1.PAS, ODE2.PAS Bulirsch-Stoerova metoda Je obdobná Rombergově integraci a hodí se pokud je funkce f dostatečně hladká a zadaná rovnice nemá singulární bod. Postup je následující: provede se výpočet pro několik h, používá se sudá metoda (chyba je úměrná sudé mocnině h ) výsledek se interpoluje racionální lomenou funkcí proměnné h 2 a provede se extrapolace na h=0 výpočet se provádí postupně s počtem kroků n=2,4,6,8,12,16,24,32,48,64,96, více kroků než 96 se nepoužívá pro interpolaci se používá maximálně 7 z vypočtených hodnot pro různá n Pro jednotlivé výpočty se zadaným h se používá zpravidla nějaká jednoduchá metoda, např. metoda středního bodu uvedená ve slidech. Opět je snaha o co nejméně nutných vyčíslení funkce f. S Bulirsch Stoerovou metodou lze dosáhnout přesnosti 14. řádu, metoda se opět nehodí pro řešení stiff rovnic. Příklady v PASCALU BS41.PAS. Vícekrokové metody Používají se v jednom kroku hodnoty funkce y a f ve více bodech (ne pouze
k k x n ). Obecně pro ně platí vzorec y n1 = a j y n1 j h b j f i1 j. j=1 j=0 Pokud platí b 0 =0 nazýváme metody obecně explicitní, v opačném případě implicitní. Vícekrokové metody nejsou samostartující. Adamsovy metody explicitní metoda 4. řádu Adams Bashforthova y n1 h 24 55 f x, y 59 f x, y 37 f x, y 9 f x n n 1 n 1 n 2 n 2 n 3 n implicitní metoda 4. řádu Adams Moultonova y n1 h 24 9 f x, y 19 f x, y 5 f x, y f x 1 n1 n n n 1 n 1 n 2 n 2 pokud je f lineární funkce y dají se všechny y n1 převést na jednu stranu rovnice a rovnice se dá jednoduše vyřešit. V opačném případě by bylo třeba řešit nelineární rovnici gy h 24 9 f x, y19 f x, y 5 f x, y f x, y y= n1 n n n 1 n 1 n 2 n 2 Postup je následující: Metody prediktor korektor prediktor odhad y n1 explicitní metodou (např. Adams Bashforthovou) výpočet y ' n1 = f x n1, y n1 korektor implicitní metodou s použitím y ' n1 určíme y n1 výpočet y ' n1 = f x n1 1 Je složitější automatická volba kroku, ale v knihovnách implementována je. Výhodou metody je rychlost, nevýhodou je, že není samostartující, je citlivá na vlastnosti funkce f a nehodí se pro stiff rovnice. Stabilita, konvergence a konzistence viz. slidy.
Špatně podmíněné úlohy Přík lad: Řešení diferenciální rovnice y ' ' = y S počátečními podmínkami y 0=1 a y ' 0= 1 je analytické řešení y=e x. S počátečními podmínkami y0=1 a y ' 0= 1 je analytické řešení y=e x e x. Pro libovolně malé existuje x takové, že složka řešení e x bude převažovat nad složkou e x. A protože se chybě při numerickém řešení prostě nevyhneme, objeví se v řešení parazitní složka, která poroste a po určité době převáží řešení. Takovým úlohám se říká špatně podmíněné. Příklad v PASCALU ODE3.PAS. Stiff rovnice (rovnice se silným tlumením) Obsahují v sobě útlum s charakteristickým časem mnohem menším, než jsou zbylé charakteristické časy úlohy. V čase větším než je rychle se tlumící složka zanedbatelně malá, proto je u dosud popsaných metod nutné volit krok h. (Nemusí se samozřejmě jednat jen o čas, ale ve fyzice se takové rovnice často vyskytují a jsou většinou v nich jako proměnná vystupuje právě čas.) Přík lad 1. stiff rovnice y ' ' 101 y ' 100 y=0 má řešení y=c 1 exp 100 xc 2 exp x Na následujícím obrázku je řešení rovnice s konstantami c 1 =c 2 =1 a je vidět, že první složka řešení pro větší x úplně vymizí, naopak pro malá x je mnohem důležitější, než složka druhá.
Ještě názornější je příklad řešení rovnice y ' = 100 y100 s počáteční podmínkou y 0= y 0. Analytické řešení je y= y 0 1exp 100 x1 tedy pro veklá x v podstatě 1. Řeší li se rovnice Eulerovou metodou y n1 = y n h 100 y n 100, z čehož lze vyjádřit y n = y 0 11 100 h n 1. Je vidět, že pokud se použije krok h0.02, první člen v absolutní hodnotě roste a řešení je zcela chybné. Pro stiff problémy jsou tedy mnohem vhodnější implicitní metody, protože dovolují podstatně delší krok h. Příklad v PASCALU ODE41.PAS. Implicitní Eulerova metoda má tvar y n1 = y n h f x n1 1, a pokud ji aplikujeme na předchozí rovnici dostaneme y n =1 y 0 1, tedy řešení konvergující k 1 pro libovolné h. 1 100 h n Metody, které dovolují u stiff rovnic použít delší krok se nazývají stiff stabilní a zabýval se jimi C.W.Gear. Stabilita s konečným krokem viz. slidy. Příklad v PASCALU IME41.PAS. Semiimplicitní Eulerova metoda Implicitní metody jsou vhodné pro lineární diferenciální rovnice, kde se při výpočtu
y n1 řeší lineární rovnice. Řešení nelineárních rovnic je obtížnější a u systémů rovnic se to ještě víc komplikuje. Proto se implicitní rovnice předělá tak, aby byla lineární v y n1 a takové metodě se říká semiimplicitní. Linearizace se provádí rozvojem funkce f do Taylorovy řady f x n1 1 = f x n1 y n1 y n f y x n1. Dosazením do implicitní Eulerovy metody dostaneme y n1 = y n h[ 1 h f 1 y x n1 ] f x n1. Pro řešení stiff problémů se používají: Rosenbrockovy metody (semiimplicitní zobecnění Runge Kuttových metod) Semiimplicitní zobecnění Bulirsch Stoerovy metody Vícekrokové Gearovy metody (semiimplicitní zobecnění metod prediktorkorektor) Okrajová úloha