UČEBNÍ TEXTY VYSOKÝCH ŠKOL Vysoké učení technické v Brně Fakulta strojního inženýrství Doc. RNDr. Libor Čermák, CSc. Numerické metody pro řešení diferenciálních rovnic Ústav matematiky FSI VUT v Brně
Obsah Obyčejné diferenciální rovnice: počáteční úlohy 5. Formulace, základní pojmy.............................. 5.2 Eulerovy metody.................................... 7.3 Explicitní Rungovy-Kuttovy metody......................... 2.4 Lineární mnohokrokové metody............................ 9.4. Obecná lineární mnohokroková metoda.................... 9.4.2 Adamsovy metody................................ 20.4.3 Metody zpětného derivování.......................... 24.5 Tuhé problémy..................................... 26 2 Obyčejné diferenciální rovnice: okrajové úlohy 33 2. Metoda střelby..................................... 33 2.2 Diferenční metoda................................... 35 2.3 Metoda konečných objemů............................... 40 2.4 Metoda konečných prvků............................... 4 3 Parciální diferenciální rovnice 48 3. Úloha eliptického typu................................. 49 3.. Formulace úlohy................................. 49 3..2 Diferenční metoda................................ 50 3..3 Metoda konečných objemů........................... 56 3..4 Metoda konečných prvků............................ 60 3.2 Úloha parabolického typu............................... 67 3.3 Úloha hyperbolického typu.............................. 7 3.4 Hyperbolická rovnice prvního řádu.......................... 73 Literatura 80 3
Předmluva Tato skripta jsou určena pro studium předmětu Numerické metody II. Výklad navazuje na úvodní kurz Numerické metody a proto se předpokládá, že čtenář má základní znalosti o numerických metodách lineární algebry, řešení nelineárních rovnic, interpolaci, numerickém derivování a integrování. Předkládaný text lze použít také jako studijní literaturu pro doktorandské studium na FSI VUT. Skripta uvádějí celou řadu algoritmů a doprovodný text [0] k tomu přidává příklady a cvičení. Pro implementaci algoritmů a experimentování s nimi se výtečně hodí prostředí MATLABu. První kapitola se věnuje numerickému řešení počátečních úloh pro obyčejné diferenciální rovnice. Dílčí témata jsou tradiční, tj. Rungovy-Kuttovy metody, Adamsovy metody a metody zpětného derivování. Ve druhé kapitole jsou uvedeny tři základní metody řešení okrajových úloh pro obyčejné diferenciální rovnice druhého řádu, a sice diferenční metoda, metoda konečných objemů a metoda konečných prvků. Třetí kapitola je věnována numerickým metodám řešení parciálních diferenciálních rovnic. Pro eliptickou parciální diferenciální rovnici ve dvou prostorových proměnných je uvedena diskretizace diferenční metodou, metodou konečných objemů a metodou konečných prvků. Řešení parabolické a hyperbolické parciální diferenciální rovnice druhého řádu v jedné prostorové proměnné se provádí metodou přímek. Pro hyperbolickou rovnici prvního řádu v jedné prostorové proměnné je použita metoda charakteristik. V rámci klasických tematických okruhů jsem se snažil do skript zařadit takové numerické metody, které se v současnosti skutečně používají. Vycházel jsem přitom z osvědčených učebnic numerické matematiky, jakými jsou např. knihy [9], [7], [9], [26], a z vynikajících monografií, mezi nimi zejména [2], [22], [23], [4], [8], [2], [28]. Pokud jde o české zdroje, nejvíce podnětů jsem čerpal z knih [26], [27] a ze skript [6], [3] a [8]. Za chyby a přepisy, které se bohužel ve skriptech jistě vyskytnou, se dopředu omlouvám. Budu vděčný všem čtenářům, kteří mně na ně upozorní. Brno, květen 203 Libor Čermák 4
. Obyčejné diferenciální rovnice: počáteční úlohy V této kapitole se budeme zabývat problematikou numerického řešení počátečních úloh pro obyčejné diferenciální rovnice... Formulace, základní pojmy Počáteční problém pro ODR spočívá v určení funkce y(t), která vyhovuje diferenciální rovnici y (t) = f(t, y(t)) (.) a splňuje počáteční podmínku y(a) = η. (.2) Je-li v nějakém okolí D bodu [a, η] funkce f(t, y) spojitá a splňuje-li v tomto okolí Lipschitzovu podmínku s konstantou L vzhledem k proměnné y, tj. platí-li f(t, u) f(t, v) L u v [t, u], [t, v] D, (.3) pak bodem [a, η] prochází jediné řešení y(t) rovnice (.). Jestliže funkce f(t, y) má v D omezenou parciální derivaci vzhledem k proměnné y, tj. když y f(t, y) L, Lipschitzova podmínka (.3) platí. Jiný standardní výsledek říká, že když je funkce f(t, y) spojitá na a, b R a splňuje tam Lipschitzovu podmínku, pak počáteční problém (.), (.2) má jediné řešení definované v celém intervalu a, b. Počáteční problém pro soustavu ODR znamená určit funkce y (t),...,y d (t) splňující diferenciální rovnice y j (t) = f j(t, y (t),...,y d (t)), j =, 2,..., d, a počáteční podmínky y j (a) = η j, j =, 2,..., d. Stručnější vektorový zápis je kde y (t) = f(t,y(t)), y(a) = η, (.4) y(t) = (y (t), y 2 (t),...,y d (t)) T, y (t) = (y (t), y 2(t),...,y d(t)) T, f(t,y(t)) = (f (t,y(t)), f 2 (t,y(t)),..., f d (t,y(t))) T, η = (η, η 2,...,η d ) T. Je-li v okolí D bodu [a, η] funkce f(t,y) spojitá a splňuje tam vzhledem k proměnné y Lipschitzovu podmínku s konstantou L, tj. platí-li f(t,u) f(t,v) L u v [t,u], [t,v] D, (.5) 5
pak bodem [a, η] prochází jediné řešení počáteční úlohy (.4). Má-li f v D spojité a omezené parciální derivace { f i (t,y)/ y j } d i,j=, pak Lipschitzova podmínka (.5) platí. Je-li D = a, b R d, jediné řešení existuje v celém intervalu a, b. Rovnice vyššího řádu. Počáteční problém pro obyčejnou diferenciální rovnici řádu d, y (d) (t) = F(t, y(t), y (t),...,y (d ) (t)) (.6) s počátečními podmínkami y(a) = η, y (a) = η 2,...,y (d ) (a) = η d, lze snadno převést na počáteční problém (.4) pro d rovnic řádu prvního: y (t) = y 2 (t), y (a) = η, y 2 (t) = y 3(t), y 2 (a) = η 2,.. y d (t) = y d(t), y d (a) = η d, y d(t) = F(t, y (t), y 2 (t),...,y d (t)), y d (a) = η d, kde y (t) = y(t), y 2 (t) = y (t),..., y d (t) = y (d ) (t). V dalším budeme vždy předpokládat, že uvažovaná počáteční úloha má v intervalu a, b jediné řešení. Budeme také předpokládat, že funkce f(t, y) má tolik spojitých derivací, kolik jich v dané situaci bude zapotřebí. Jedna rovnice prvního řádu s jednou neznámou funkcí je v aplikacích méně významná než soustavy rovnic. Metody přibližného řešení se však snadněji odvodí pro jednu rovnici a lze je aplikovat bezprostředně i na soustavy. Také analýza numerických metod je pro jednu rovnici podstatně snadnější. Proto se v následujícím výkladu převážně omezíme jen na jednu rovnici. Z velkého množství metod uvedeme ty, které jsou pro své dobré vlastnosti široce používány. Mezi ně bezesporu patří metody implementované do Matlabu a právě na ně se v tomto textu zaměříme. Numerickým řešením počáteční úlohy rozumíme výpočet přibližných hodnot hledaného řešení y(t) v bodech t n dosti hustě vykrývajících interval a, b. Necht tedy a = t 0 < t < < t Q = b je dělení intervalu a, b. Body t n jsou uzly, vzdálenost τ n = t n+ t n dvou sousedních uzlů je délka kroku Jsou-li všechny kroky stejně dlouhé, tj. když τ n = τ = (b a)/q, hovoříme o rovnoměrném (ekvidistantním) dělení intervalu a, b. V tom případě je t n = a + nτ, n = 0,,..., Q. Hodnotu přesného řešení v uzlu t n budeme značit y(t n ) a hodnotu přibližného řešení y n. Jestliže se nám podaří najít přibližné řešení y n, n = 0,,..., Q, můžeme vypočítat přibližnou hodnotu řešení y(t) v libovolném bodě t a, b interpolací. Numerická metoda pro řešení počáteční úlohy (.), (.2) je předpis pro postupný výpočet aproximací y, y 2,...,y Q, y 0 = η z počáteční podmínky. Metoda se nazývá 6
k-kroková, závisí-li předpis pro výpočet aproximace y n+ na předchozích aproximacích y n, y n,...,y n k+. Speciálně jednokroková metoda počítá přibližné řešení y n+ v uzlu t n+ jen pomocí znalosti přibližného řešení y n v uzlu t n, přibližná řešení y n, y n 2,... spočtená v předchozích uzlech t n, t n 2,... nepoužívá. Výpočet y n+ nazýváme krokem metody od t n do t n+ (stručně krokem). Při popisu kroku budeme u délky kroku τ n = t n+ t n vypouštět index, tj. píšeme τ n = τ..2. Eulerovy metody Explicitní Eulerova metoda. Nejjednodušší numerickou metodou pro řešení úlohy (.), (.2) je explicitní Eulerova metoda (stručně EE metoda). EE metodu snadno odvodíme z Taylorovy formule y(t n+ ) = y(t n + τ) = y(t n ) + τy (t n ) + 2 τ2 y (ξ n ), ξ n (t n, t n+ ). (.7) Uvážíme-li, že y (t n ) = f(t n, y(t n )) a zanedbáme-li člen 2 τ2 y (ξ n ), dostaneme y(t n+ ) y(t n ) + τf(t n, y(t n )). Výrazy y(t n ) a y(t n+ ) nahradíme jejich přibližnými hodnotami y n a y n+, znaménko přibližné rovnosti nahradíme znaménkem rovnosti a obdržíme předpis EE metody y n+ = y n + τf(t n, y n ). (.8) O explicitní metodě hovoříme proto, že pro určení y n+ máme explicitní vzorec: dosazením známé hodnoty y n do pravé strany rovnice (.8) obdržíme hledanou hodnotu y n+. V anglicky psané literatuře se EE metoda označuje jako Euler method resp. explicit Euler method resp. forward Euler method. Diskretizační chyby. Přesnost numerické metody měříme pomocí tzv. lokální diskretizační chyby (anglicky local truncation error) lte n = y(t n+ ) y(t n ) τf(t n, y(t n )). Lokální diskretizační chyba je tedy chyba, které se dopustíme v jednom kroku metody za tzv. lokalizačního předpokladu, že y n = y(t n ) je přesné řešení počáteční úlohy (.), (.2). Z (.7) pro EE metodu plyne lte n = 2 τ2 y (ξ n ) a tedy lte n Cτ 2, kde C = 2 max y (t), t n t t n+ což lze stručně vyjádřit zápisem lte n = O(τ 2 ). Následující poznámka připomíná význam Landauova symbolu O(τ p ). Poznámka. Necht ϕ(τ) je funkce definovaná v intervalu 0, τ 0 a p je libovolné číslo. Řekneme, že funkce ϕ(τ) je řádu O(τ p ) a píšeme ϕ(τ) = O(τ p ), jestliže existuje kladné číslo C takové, že pro všechna 0 < τ τ 0 platí ϕ(τ) Cτ p. Lokální diskretizační chyba při reálném výpočtu nevzniká, nebot obecně není splněn lokalizační předpoklad, tj. y n y(t n ). Lokální diskretizační chyba se uplatní jen při 7
analýze vlastností numerické metody, například konvergence y n y(t n ). Pro praktické účely, například pro řízení délky kroku, je nutné pracovat s tzv. lokální chybou (anglicky local error) definovanou předpisem le n = u n (t n+ ) y n+, kde u n (t) je tzv. lokální řešení počátečního problému u n (t) = f(t, u n(t)), u n (t n ) = y n. Lokální chyba le n je tedy chyba, které se skutečně dopustíme při reálném výpočtu v kroku od t n do t n+. Dá se ukázat, že pro výpočet s dostatečně malými délkami kroků je rozdíl mezi oběma lokálními chybami prakticky zanedbatelný. y(t) lte n τf(t n, y(t n )) e n+ u n (t) le n τf(t n, y n ) y n y n+ t n t n+ t Obr... Diskretizační chyby Hromaděním lokálních chyb vzniká globální diskretizační chyba e n = y(t n ) y n. V případě rovnoměrného dělení lze dokázat, že e n = y(t n ) y n Cτ, n = 0,,..., Q, (.9) kde C je konstanta nezávislá na τ = (b a)/q. Tuto skutečnost stručně vyjádříme tvrzením, že globální diskretizační chyba EE metody je řádu O(τ). Říkáme také, že EE metoda je řádu. Protože e n 0 pro Q, numerické řešení získané EE metodou konverguje k řešení přesnému. Říkáme také, že rychlost (řád) konvergence EE metody je rovna. Lokální chyby lte n, le n a globální chyba e n+ jsou zakresleny v obrázku.. 8
Tvrzení (.9) lze snadno ověřit v případě, že f(t, y) = f(t) nezávisí na y. Pak totiž y(t k+ ) = y(t k ) + τf(t k ) + 2 τ2 f (ξ k ), y k+ = y k + τf(t k ). Odečtením obou rovnic dostaneme e k+ = e k + 2 τ2 f (ξ k ), a protože e 0 = 0, je e n = 2 τ2 [f (ξ 0 ) + f (ξ ) + + f (ξ n )]. Označíme-li M = max a ξ b f (ξ), pak e n 2 τ2 nm 2 [τq]mτ = 2 (b a)mτ, nebot τq = b a. Zaokrouhlovací chyby. Dopustíme-li se v kroku od t n do t n+ zaokrouhlovací chyby, jejíž velikost y n+ = ỹ n+ y n+ nepřesáhne ε, pak lze dokázat, že po Q krocích délky τ velikost zaokrouhlovací chyby nepřesáhne Kετ, kde K je konstanta nezávislá na ε a τ. Pro celkovou chybu EE metody pak platí max y(t n) ỹ n Cτ + εkτ, 0 n Q kde C, K jsou konstanty nezávislé na τ a ε. Protože konstanta ε je malá, vliv zaokrouhlování se projeví až pro extrémně velký počet kroků Q (tj. pro velmi malé τ). Tato situace při řešení běžných úloh nenastává a tudíž vliv zaokrouhlovacích chyb bývá nepodstatný. Stabilita. Řekneme, že počáteční problém (.), (.2) je stabilní vzhledem k počáteční podmínce, jestliže malá změna počáteční hodnoty η vyvolá malou změnu řešení. Elementárním příkladem takového problému je testovací úloha y = λy, y(0) =, (.0) kde λ = α + iβ je komplexní číslo se zápornou reálnou složkou, tj. Re(λ) = α < 0. Skutečně, jestliže pak u (t) = λu(t), u(0) = = u(t) = e λt v (t) = λv(t), v(0) = + δ = v(t) = ( + δ)e λt, u(t) v(t) δ e (α+iβ)t = δ e αt cosβt + i sin βt = δ e αt δ. Pro řešení y(t) = e λt testovací úlohy (.0) rovněž platí y(t) = e λt = e αt cosβt + i sin βt 0 pro t. Je proto přirozené požadovat, aby na rovnoměrném dělení t n = nτ, n = 0,,..., numerické řešení y n testovací úlohy (.0) splňovalo analogickou relaci, tzv. podmínku stability y n 0 pro n. (.) 9
Aplikujeme-li EE metodu na testovací rovnici (.0), dostaneme y n+ = y n + τλy n = ( + τλ)y n = ( + τλ) 2 y n = = ( + τλ) n+ y 0. Podmínka stability (.) bude splněna, právě když + τλ <, neboli když τλ leží v tzv. oblasti absolutní stability R A : τλ R A = {z C z + < }. Oblast absolutní stability EE metody je tedy vnitřek jednotkového kruhu z+ < komplexní roviny C se středem v bodě [, 0]. Průnik oblasti absolutní stability se zápornou částí reálné osy je interval absolutní stability I A. Pro EE metodu I A = ( 2, 0). Pro reálné λ < 0 podmínka stability (.) vyžaduje volit krok τ < 2/ λ. Tvar a velikost oblasti absolutní stability metody je spolu s řádem metody základní charakteristikou kvality numerické metody. EE metoda z tohoto pohledu příliš kvalitní není: je pouze řádu a oblast její absolutní stability je malá. EE metoda se používá jen výjimečně. Implicitní Eulerova metoda. Vyjdeme opět z Taylorova rozvoje y(t n ) = y(t n+ ) τy (t n+ ) + 2 τ2 y (ξ n ), ξ n (t n, y n+ ). (.2) Vypuštěním členu 2 y (ξ n ) a užitím rovnosti y (t n+ ) = f(t n+, y(t n+ )) obdržíme implicitní Eulerovu metodu (stručně IE metodu) jako předpis y n+ = y n + τf(t n+, y n+ ). (.3) V anglicky psané literatuře se IE metoda označuje jako implicit Euler method resp. backward Euler method. O implicitní metodě mluvíme proto, že neznámá y n+ je rovnicí (.3) určena implicitně. Určit y n+ znamená řešit obecně nelineární rovnici. To je ve srovnání s EE metodou problém navíc. Aby mělo použití IE metody nějaký smysl, musí mít IE metoda oproti EE metodě také nějakou přednost. Pokusme se ji najít. Nejdříve prozkoumáme přesnost IE metody. Lokální diskretizační chyba IE metody je definována předpisem lte n = y(t n+ ) y(t n ) τf(t n+, y(t n+ )), kde y(t) je řešení úlohy (.), (.2). Z (.2) plyne lte n = 2 τ2 y (ξ n ) = O(τ 2 ). IE metoda je tedy řádu stejně jako EE metoda. Při podrobnějším zkoumání lze zjistit, že { 2 y (t n )τ 2 + O(τ 3 ) pro EE metodu, lte n = 2 y (t n )τ 2 + O(τ 3 ) pro IE metodu. Hlavní členy lokálních diskretizačních chyb (v případě Eulerových metod to jsou členy obsahující τ 2 ) jsou co do absolutní hodnoty stejné, liší se jen znaménkem. Můžeme proto oprávněně soudit, že obě metody jsou stejně přesné. 0
Podívejme se také na stabilitu IE metody. Pro testovací úlohu (.0) je y n+ = y n + τλy n+, odtud y n+ = ( ) n+ τλ y n = = y 0 τλ a tedy podmínka stability (.) platí, právě když τλ >, neboli když τλ leží v oblasti absolutní stability R A : τλ R A = {z C z > }. Oblast absolutní stability IE metody je tedy obrovská, je to celý vnějšek z > jednotkového kruhu komplexní roviny C se středem v bodě [, 0]. Interval absolutní stability IE metody I A = (, 0). Podmínka stability (.) délku kroku IE metody zřejmě nijak neomezuje. Je to právě mimořádná stabilita, která je onou hledanou předností IE metody ve srovnání s EE metodou. Tento klad je však třeba vykoupit nutností řešit obecně nelineární rovnici. y n+ získáme jako přibližné řešení rovnice g(z) = 0, kde g(z) = z y n τf(t n+, z). Protože dobrou počáteční aproximaci lze získat extrapolací z hodnot y n, y n,..., dá se očekávat rychlá konvergence Newtonovy metody (pro řešení nelineárních rovnic). Praktická zkušenost potvrzuje, že tomu tak skutečně je. Lichoběžníkovou metodu dostaneme jako aritmetický průměr EE metody a IE metody: y n+ = y n + 2 τ[f(t n, y n ) + f(t n+, y n+ )]. (.4) Pro lokální diskretizační chybu lte n = y(t n+ ) y(t n ) 2 τ[f(t n, y(t n )) + f(t n+, y(t n+ ))] užitím Taylorovy věty odvodíme lte n = 2 τ3 y (t n ) + O(τ 4 ). Lichoběžníková metoda (stručně TR metoda podle anglického trapezoidal rule) je tedy implicitní metoda řádu 2. Stabilitu TR metody zjistíme řešením testovací úlohy (.0): y n+ = y n + 2 τλ[y n + y n+ ], odtud y n+ = 2 + τλ 2 τλ y n = = Není těžké ověřit, že podmínka stability (.) platí, právě když τλ R A = {z C Re(z) < 0}. [ ] n+ 2 + τλ y 0. 2 τλ Oblast absolutní stability TR metody tedy obsahuje celou zápornou polorovinu komplexní rovniny C, interval absolutní stability I A = (, 0). TR metoda (s podporou IE metody) je v Matlabu implementována jako program ode23t.
.3. Explicitní Rungovy-Kuttovy metody Obecný tvar s-stupňové explicitní Rungovy-Kuttovy metody je y n+ = y n + τ(b k + b 2 k 2 + + b s k s ), (.5) kde koeficienty k i, i =, 2,..., s, jsou určeny předpisem k = f(t n, y n ), k 2 = f(t n + τc 2, y n + τa 2 k ), k 3 = f(t n + τc 3, y n + τ(a 3 k + a 32 k 2 )), (.6). k s = f(t n + τc s, y n + τ(a s k + a s2 k 2 + + a s,s k s )), a kde b i, c i, a ij jsou konstanty definující konkrétní metodu. Rungova-Kuttova metoda (.5), (.6) je explicitní: nejdříve spočteme k, pak k 2 pomocí k, pak k 3 pomocí k, k 2 a tak dále, až nakonec spočteme k s pomocí k, k 2,...,k s. Vypočtené koeficienty k i, i =, 2,..., s, dosadíme do (.5) a dostaneme y n+. V dalším budeme hovořit jen o Rungových-Kuttových metodách (stručně RK metodách), tj. slůvko explicitní vynecháme. Je však třeba připomenout, že existují také implicitní Rungovy-Kuttovy metody, těmi se však zabývat nebudeme. RK metody jsou zřejmě jednokrokové: k výpočtu y n+ potřebujeme znát jen y n, předchozí hodnoty y n, y n 2,... v kroku od t n do t n+ nepoužijeme. Koeficient k i je směrnicí lokálního řešení procházejícího bodem [t i,y i ], kde [t, y ] = [t n, y n ], t i = t n+τc i, y i = y n+τ(a i k +a i2 k 2 + +a i,i k i ), i = 2, 3,..., s. Do bodu [t n+, y n+ ] se tedy dostaneme z bodu [t n, y n ] tak, že se posuneme po přímce, jejíž směrnice k = b k + b 2 k 2 + + b s k s je lineární kombinací se směrnic k, k 2,..., k s, pro metodu řádu alespoň jde o vážený průměr, nebot s i= b i =, viz (.7). Abychom dostali konkrétní metodu, musíme určit stupeň s a dále konstanty c i, b i, a ij. Konstanty RK metod je zvykem zapisovat do tabulky známé jako Butcherova tabulka: c 2 a 2 c 3 a 3 a 32.. c s a s a s2... a s,s b b 2... b s b s Jedním z kritérií při volbě konstant RK metody je dosažení dostatečné přesnosti. Tu měříme pomocí lokální diskretizační chyby lte n = y(t n+ ) y(t n ) s b i k i (t n ), i= 2
kde k (t n ) = f(t n, y(t n )), i k i (t n ) = f(t n + τc i, y n + τ a ij k j (t n )), i = 2, 3,..., s. j= Lokální diskretizační chyba je chyba, které se dopustíme v jednom kroku za lokalizačního předpokladu y n = y(t n ). RK metoda je řádu p, pokud lokální diskretizační chyba je řádu O(τ p+ ). Pro p =, 2, 3 lze odvodit následující tzv. podmínky řádu: řád : řád 2: řád 3: s b i =, i= s b i =, i= s b i =, i= s b i c i =, (.7) 2 i=2 s s s b i c i =, b 2 i c 2 i =, i b 3 i a ij c j =. 6 i=2 i=2 i=2 j=2 Odvození podmínek řádu pro p =, 2, 3, 4, 5 lze najít třeba v [22]. Protože všechny prakticky používané metody splňují podmínku c i = a i + a i2 + + a i,i, i =, 2,..., s, (.8) budeme i my předpokládat, že podmínka (.8) platí. RK metoda řádu p má globální diskretizační chybu řádu O(τ p ). Předpokladem pro platnost tohoto tvrzení je dostatečná hladkost pravé strany f, konkrétně je třeba, aby funkce f(t, y) měla spojité derivace až do řádu p včetně. Pokud f má spojité derivace jen do řádu s p, pak lze pro globální chybu dokázat pouze řád O(τ s ), viz [22]. Označme p(s) maximální dosažitelný řád s-stupňové RK metody. Platí p(s) = s pro s =, 2, 3, 4, p(8) = 6, p(5) = 4, p(9) = 7 p(6) = 5, p(s) s 2 pro s = 0,,... p(7) = 6, Vidíme, že s-stupňové RK metody řádu s existují jen pro s 4. Například metoda řádu 5 je nejméně 6-ti stupňová. Uved me si několik nejznámějších metod. Metoda řádu. Pro s = p = existuje jediná explicitní metoda a tou je nám již známá EE metoda y i+ = y i + τf(t i, y i ). Metody řádu 2. Pro s = p = 2 má explicitní RK metoda Butcherovu tabulku c 2 a 2 b b 2 Podmínky (.7) pro metodu řádu 2 stanoví b + b 2 =, b 2 c 2 = 2, 3
a protože ve shodě s (.8) předpokládáme a 2 = c 2, dostáváme tabulku a Pro a = 2 a b b kde ab =. Parametry a, b jsou tedy svázány jednou podmínkou, 2 takže zvolíme-li a 0, je b = /(2a). je b = a dostáváme metodu y n+ = y n + τk 2, kde k 2 = f(t n + 2 τ, y n + 2 τk ), k = f(t n, y n ), (.9) známou pod názvem modifikovaná Eulerova metoda. Budeme ji značit EM jako první modifikace Eulerovy metody. V anglicky psané literatuře je metoda (.9) známa jako midpoint Euler formula. Pro a = je b = a dostáváme metodu 2 y n+ = y n + 2 τ(k + k 2 ), kde k = f(t n, y n ), k 2 = f(t n + τ, y n + τk ). (.20) Budeme ji značit EM2 jako druhou modifikaci Eulerovy metody. Metoda (.20) se také často uvádí pod názvem Heunova metoda. Pro a = 2 je b = 3 a dostáváme metodu 3 4 y n+ = y n + 4 τ(k + 3k 2 ), kde k = f(t n, y n ), k 2 = f(t n + 2 3 τ, y n + 2 3 τk ), známou jako Ralstonova metoda řádu 2 (stručně R2 metoda). Metody řádu 3. Pro s = p = 3 dostáváme Butcherovu tabulku c 2 c 2 c 3 c 3 a 32 a 32 b b 2 b 3 a 4 podmínky pro metodu řádu 3: b + b 2 + b 3 =, b 2 c 2 + b 3 c 3 = 2, b 2 c 2 2 + b 3c 2 3 = 3, b 3a 32 c 2 = 6. Když zvolíme dva parametry 0 < c 2 < c 3, jsou tím všechny koeficienty metody jednoznačně určeny. Volba c 2 =, c 2 3 = 3 vede na Ralstonovu metodu řádu 3 (stručně R3 4 metodu): 2 2 3 4 0 2 9 3 4 3 4 9 y n+ = y n + 9 τ (2k + 3k 2 + 4k 3 ), k = f(t n, y n ), k 2 = f(t n + 2 τ, y n + 2 τk ), k 3 = f(t n + 3 4 τ, y n + 3 4 τk 2). Ralstonova metoda řádu 3 je základem Runge-Kutta-Bogacki-Shampine metody, viz [22], která je implementována do Matlabu jako funkce ode23 a jejíž popis uvedeme v této kapitole později. Metody řádu 4. Pro s = p = 4 je nejznámější klasická Rungova-Kuttova metoda 2 2 0 2 2 0 0 6 3 3 6 y n+ = y n + 6 τ (k + 2k 2 + 2k 3 + k 4 ), k = f(t n, y n ), k 2 = f(t n + 2 τ, y n + 2 τk ), k 3 = f(t n + 2 τ, y n + 2 τk 2), k 4 = f(t n + τ, y n + τk 3 ). 4
Klasická Rungova-Kuttova metoda (stručně crk4) byla velmi populární v době, kdy se ještě nepoužívaly samočinné počítače a kdy proto velmi významným kritériem byla jednoduchost metody. Toto hledisko však v současné době ztratilo na významu a proto se používají jiné metody. Kvalitní dvojice metod řádu 4 a 5 jsou součástí metod Runge- Kutta-Fehlberg nebo Runge-Kutta-Dormand-Prince, viz např. [2]. Posledně jmenovaná dvojice metod je použita v matlabovské funkci ode45, popis uvedeme v této kapitole později. Řízení délky kroku. V profesionálních programech uživatel zadá toleranci ε a program délku kroku vybírá tak, aby velikost odhadu est n lokální chyby le n nabývala pořád přibližně stejné hodnoty ε. Krok od y n do y n+ je úspěšný, když est n ε. (.2) Určení odhadu est n lokální chyby se věnuje následující odstavec. Je-li podmínka (.2) splněna, krok je úspěšný a pokračujeme výpočtem y n+2. Pokud podmínka (.2) splněna není, krok je neúspěšný a výpočet y n+ opakujeme. Novou délku kroku τ určíme v případě úspěchu i neúspěchu stejným postupem, který si ted vysvětlíme. Předpokládejme, že y n+ počítáme metodou řádu p, takže le n. = Cτ p+. = estn = C. = est n /τ p+. Novou délku kroku τ zvolíme tak, aby velikost le n lokální chyby le n přibližně rovna zadané toleranci ε, tj.. = C(τ ) p+ byla le n. = C (τ ) p+. = estn /τ p+ (τ ) p+. = ε = τ. = τ (ε/ estn ) /(p+). Nová délka kroku τ se ještě redukuje pomocí parametru θ <, takže τ = θτ (ε/ est n ) /(p+). (.22) V matlabovských programech ode23 a ode45 se bere θ = 0,8. Současně se ještě uplatňují následující zásady. ) Tolerance ε se uvažuje ve tvaru ε = max{ε r max{ y n, y n+ }, ε a }, kde ε r je relativní tolerance a ε a je tolerance absolutní. Matlabem přednastavené hodnoty jsou ε r = 0 3 a ε a = 0 6. 2) Označme τ min resp. τ max minimální resp. maximální povolenou délku kroku. Jestliže τ < τ min, výpočet končí konstatováním, že danou diferenciální rovnici program neumí s požadovanou přesností vyřešit. Přitom τ min = 6ε m (t n ), kde ε m (t n ) je tzv. relativní přesnost aritmetiky pohyblivé řádové čárky, ε m (t n ) =. 2,2 0 6 t n, viz funkceeps v Matlabu. Jestliže τ > τ max, položí se τ = τ max, kde je τ max = 0,(b a). 3) V případě neúspěšného kroku navrženou délku τ redukujeme: τ = max(τ, q min τ), kde q min = 0,5 resp. 0, v ode23 resp. ode45 při prvním neúspěchu v rámci jednoho kroku a τ = 0,5τ při opakovaném neúspěchu v témže kroku. 5
4) V případě úspěšného kroku délku kroku τ redukujeme předpisem τ = min(τ, q max τ), kde q max = 5. 5) V kroku bezprostředně následujícím po neúspěšném kroku se délka kroku nesmí zvětšit. 6) Počáteční délka kroku τ = θε /(p+) r [max( η, ε a /ε r )] / f(a, η), (.23) přičemž pro τ < τ min změníme τ na τ min a pro τ > τ max změníme τ na τ max. 7) Při programování je třeba postupovat opatrně. Příkazy programu je nutné uspořádat tak, aby nemohlo dojít k dělení nulou, viz (.22) a (.23). Podrobnější informace týkající se řízení délky kroku lze najít v [22]. Odhad lokální chyby. Základní myšlenka je jednoduchá. Použijí se dvě metody, z nichž jedna je řádu p a druhá řádu p+. Z výchozí hodnoty y n spočteme yn+ přesnější metodou a yn+ méně přesnou metodou. Použitelný odhad lokální chyby je est n = y n+ y n+. Obě metody používají tutéž množinu koeficientů {k j } s j=. V tom případě je totiž získání odhadu laciné. Dvojice Rungových-Kuttových metod se popisují pomocí rozšířené Butcherovy tabulky, přičemž c 2 a 2.. yn+ = y n + τ s j= b j k j je metoda řádu p, c s a s a s2... b b 2... b s b b 2... b s E E 2... E s y n+ = y n + τ s j= b j k j je metoda řádu p +, est n = τ s j= E jk j je odhad lokální chyby, takže E j = b j b j, j =, 2,..., s. Pokud ve výpočtu pokračujeme přesnější metodou, tj. když y n+ = y n+ = y n++est n, říkáme, že jsme použili dvojici metod s lokální extrapolací. Tento postup se v současných programech upřednostňuje. Druhou možností je pokračovat méně přesnou metodou, tj. položit y n+ = y n+. V tom případě se přesnější metoda použije jen pro získání odhadu chyby a říkáme, že jsme dvojici metod použili bez lokální extrapolace. Obě níže uvedené metody BS32 a DP54 se používají jako metody s lokální extrapolací. Příkladem metody, která se obvykle používá bez lokální extrapolace, je Runge-Kutta-Fehlbergova metoda řádu 4, označovaná stručně jako RKF45, viz např. [2]. Na vysvětlenou k použitým zkratkám uved me, že první číslo značí řád metody a druhé číslo řád pomocné metody použité pro odhad lokální chyby. 6
Bogacki Shampine metoda, stručně BS32 metoda, je implementována v Matlabu jako funkce ode23. Rozšířená Butcherova tabulka BS32 metody je 2 2 3 3 0 4 4 2 9 7 24 2 9 5 72 3 4 3 2 4 9 3 8 4 0 9 9 8 Přesnější z obou metod páru je Ralstonova R3 metoda y n+ = y n + τ [ 2 9 k + 3 k 2 + 4 9 k 3] = yn+ řádu 3. Pomocná metoda yn+ = y n + τ [ 7 k 24 + k 4 2 + k 3 3 + k ] 8 4 řádu 2 používá kromě koeficientů k, k 2 a k 3 navíc ještě koeficient k 4 = f(x n+, y n+ ). V každém kroku se tedy počítají jen 3 nové hodnoty funkce f, nebot koeficient k ve stávajícím kroku je roven koeficientu k 4 z kroku předchozího, takže nově se počítají jen koeficienty k 2, k 3 a k 4. Výjimkou je případ neúspěšného kroku, kdy se hodnota y n+ neakceptuje a krok se krátí. Tyto případy však nebývají časté. Zařazení koeficientu k 4 do metody řádu 2 nás tedy téměř nic nestojí, umožní však zlepšit vlastnosti této metody a tím i celého páru. Metoda, ve které k s = f(t n+, y n+ ), bývá označována jako FSAL podle anglického First Same As Last. Zdůrazněme, že BS32 metoda se používá jako metoda s lokální extrapolací, tj. y n+ = yn+. Hodnoty přibližného řešení pro t t n, t n+ spočteme dostatečně přesně pomocí kubického Hermitova polynomu H 3 (t) určeného podmínkami H 3 (t n ) = y n, H 3(t n ) = k, H 3 (t n+ ) = y n+, H 3(t n+ ) = k 4. Metoda BS32 je tedy skvělá: je řádu 3, v každém úspěšném kroku se pravá strana f počítá jen 3-krát, a to stačí jak na řízení délky kroku tak na výpočet řešení mezi uzly t n a t n+. Dormand-Prince metoda, stručně DP54 metoda, je definována rozšířenou Butcherovou tabulkou 5 3 0 4 5 8 9 5 3 40 9 40 44 56 45 5 9372 25360 6 56 287 9 07 355 3 68 33 32 9 64448 22 656 729 46732 5247 35 384 0 500 3 5 79 757 0 57600 6695 35 500 0 384 3 7 0 7 57600 6 695 49 503 76 8656 25 2 87 92 6 784 393 92097 640 339 200 25 2 87 92 6 784 7 7253 920 339 200 84 87 200 40 0 84 22 525 40 Metoda DP54 je typu FSAL, nebot k 7 = f(t n+, y n+ ). Proto se v každém úspěšném kroku 7
metody počítají jen koeficienty k 2,..., k 7, koeficient k byl už vypočítán jako koeficient k 7 v předchozím kroku. Zdůrazněme, že DP54 metoda se používá jako metoda s lokální extrapolací, tj. y n+ = yn+. Hodnoty přibližného řešení pro t t n, t n+ spočteme dostatečně přesně pomocí interpolačního polynomu H 4 (s) = y n + τkbq, kde k = (k, k 2, k 3, k 4, k 5, k 6, k 7 ), B = 83 64 37 2 45 28 0 0 0 0 500 0 37 000 59 0 25 32 9477 0 3392 729 06 0 7 000 37 25 2 375 64 25 55 6784 3 55 28 3 5 0 2 4 2, q = (q, q 2, q 3, q 4 ) T, přičemž q = (t t n )/τ. Metoda DP54 je rovněž vynikající: je řádu 5, v každém úspěšném kroku se pravá strana počítá jen 6-krát, a to stačí jak pro řízení délky kroku tak pro výpočet řešení v intervalu t n, t n+. Stabilita. Řešíme-li testovací rovnici (.0) RK metodou na rovnoměrném dělení s krokem τ, dostaneme y n+ = P s (τλ)y n, kde P s je polynom stupně s určený pomocí konstant b i, a ij definujících RK metodu. Podmínka stability (.) tedy platí, právě když P s (τλ) <, neboli když τλ leží v oblasti absolutní stability R A : τλ R A = {z C P s (z) < }. Explicitní RK metody mají omezenou oblast absolutní stability, nebot pro z také P s (z). Dá se ukázat, že pro p = s 4 je P s (z) = s i=0 zi /i!. Proto každá explicitní s-stupňová RK metoda řádu p = s 4 (stručně RKs metoda) má stejnou oblast absolutní stability. Oblast absolutní stability RKs metod pro s =, 2, 3, 4 a metody DP54 je zobrazena např. v [2]. Intervaly absolutní stability těchto metod jsou I A = (α, 0), kde metoda RK RK2 RK3 RK4 DP54 α 2 2 2, 5 2, 79 3,3 Zdůrazněme, že z pohledu stability je BS32 metoda ekvivalentní s RK3 metodou, obě metody tedy mají stejnou oblast a stejný interval absolutní stability. 8
.4. Lineární mnohokrokové metody V této kapitole se budeme zabývat metodami, které počítají přibližné řešení y n+ v uzlu t n+ pomocí dříve spočtených aproximací y n, y n, y n 2,... a odpovídajících hodnot f(t n, y n ), f(t n, y n ), f(t n 2, y n 2 ),... pravé strany diferenciální rovnice. Tyto hodnoty jsou znovu použity tak, abychom získali y n+ s vysokou přesností pomocí jen několika málo nových vyhodnocení funkce f(t, y). Nejznámějšími metodami tohoto typu jsou Adamsovy metody a metody zpětného derivování. Obě skupiny metod patří do obecné třídy metod známých jako lineární mnohokrokové metody, stručně LMM..4.. Obecná lineární mnohokroková metoda LMM je předpis α 0 y n+ + α y n + + α k y n+ k = τ[β 0 f(t n+, y n+ ) + β f n + + β k f n+ k ], (.24) ze kterého počítáme y n+. Přitom α j a β j jsou číselné koeficienty, které formuli jednoznačně určují, a f j je zkrácený zápis pro f(t j, y j ). V dalším budeme předpokládat, že platí normalizační podmínka α 0 =. Jestliže alespoň jeden z koeficientů α k nebo β k je různý od nuly, metoda je k-kroková. Pro β 0 0 je nová hodnota y n+ určena implicitně, hovoříme proto o implicitní metodě, pro β 0 = 0 máme metodu explicitní. Abychom v implicitní metodě určili y n+, musíme vyřešit obecně nelineární rovnici. LMM lze použít, jen když jsou zadány startovací hodnoty y 0, y,...,y k. y 0 = η určíme z počáteční podmínky, zbývající startovací hodnoty je však třeba získat jinou vhodnou metodou, y r metodou nejvýše r-krokovou. Lokální diskretizační chyba je chyba, která vznikne, když do formule (.24) dosadíme místo přibližného řešení y n+ j přesné řešení y(t n+ j ), tedy Jestliže lte n = k α j y(t n+ j ) τ j=0 k β j f(t n+ j, y(t n+ j )). j=0 lte n = C p+ τ p+ y (p+) (t n ) + O(τ p+2 ), řekneme, že metoda je řádu p. Člen C p+ τ p+ y (p+) (t n ) se nazývá hlavní člen lokální diskretizační chyby, konstanta C p+ je tzv. chybová konstanta. LMM je tím přesnější, čím je vyššího řádu. Z několika metod téhož řádu je pak nejpřesnější ta metoda, pro kterou je velikost chybové konstanty C p+ nejmenší. D-stabilita. Řekneme, že LMM je stabilní ve smyslu Dahlquista (stručně D-stabilní), jestliže všechny kořeny prvního charakteristického polynomu (ξ) = ξ k + α ξ k + + α k ξ + α k leží uvnitř jednotkového kruhu z komplexní roviny C a pokud některý kořen leží hranici z =, pak je jednoduchý. 9
Význam D-stability lze vysvětlit na rovnici y = 0. Její řešení pomocí LMM vede na předpis k j=0 α jy n+ j = 0. Zvolíme-li startovací hodnoty y j = εr j, j = 0,,..., k, kde (r) = 0 a ε je libovolné číslo, pak y n = εr n pro každé n. Skutečně, k α j εr n+ j = εr n+ k j=0 k α j r k j = εr n+ k (r) = 0. j=0 Pro r > a ε 0 je lim n y n, což je nepřijatelné: pro ε = 0 je y n = 0 přesné řešení rovnice y = 0, avšak pro ε 0, ε, tj. již pro nepatrnou poruchu startovacích hodnot y j, j = 0,,...,k, dostaneme řešení zcela nevyhovující. Dá se ukázat, že vyloučit musíme také případ, kdy r = je kořen (ξ) násobnosti větší než. Konvergence. Uvažujme D-stabilní LMM řádu p. Jestliže startovací hodnoty zadáme s chybou řádu O(τ p ), pak globální diskretizační chyba je rovněž řádu O(τ p ). Precizní formulaci a důkaz této věty lze najít např. v [27], [2]. Předpokladem její platnosti je dostatečná hladkost pravé strany f, konkrétně je třeba, aby funkce f(t, y) měla spojité derivace až do řádu p včetně. Pokud f má spojité derivace jen do řádu s p, pak lze pro globální chybu dokázat pouze řád O(τ s ). Absolutní stabilita. Řešíme-li testovací úlohu (.0) LMM na rovnoměrném dělení s krokem τ, dostaneme k (α j τλβ j )y n+ j = 0. (.25) j=0 Řešení hledejme ve tvaru y n = r n. Po dosazení do diferenční rovnice (.25) obdržíme k k (α j τλβ j )r n+ j = r n+ k (α j τλβ j )r k j = r n+ k π(r, τλ) = 0, j=0 j=0 kde π(ξ, z) = k (α j zβ j )ξ k j j=0 je tzv. polynom stability LMM. Jestliže π(r, τλ) = 0, pak y n = r n je řešením diferenční rovnice (.25) a podmínka stability r n 0 pro n platí, právě když r <. Oblast R A absolutní stability LMM metody definujeme jako množinu bodů z komplexní roviny, pro které z podmínky π(ξ, z) = 0 plyne ξ <. Podmínka absolutní stability tedy platí, když τλ R A = {z C π(ξ, z) = 0 ξ < }..4.2. Adamsovy metody Integrací diferenciální rovnice (.) od t n do t n+ dostaneme y(t n+ ) y(t n ) = tn+ t n f(t, y(t)) dt. 20
Funkci f(t, y(t)) aproximujeme pomocí interpolačního polynomu P k (t) stupně k, tj. y(t n+ ) y(t n ) + tn+ t n P k (t) dt, kde P k (t n+ j ) = f(t n+ j, y(t n+ j )). Když přibližnou rovnost nahradíme rovností a přesné řešení nahradíme řešením přibližným, dostaneme předpis y n+ = y n + tn+ t n P k (t) dt, kde P k (t n+ j ) = f(t n+ j, y n+ j ). (.26) Adams-Bashforthovy metody dostaneme, když v (.26) zvolíme j =, 2,..., k. Konstrukci polynomu P k (t) lze přehledně vyjádřit tabulkou t t n t n... t n+ k P k (t) f n f n... f n+ k Adams-Bashforthovu metodu lze zapsat ve tvaru y n+ = y n + τ k βk,j f n+ j. j= Stručně ji budeme označovat jako ABk metodu. ABk metoda je explicitní, k-kroková, řádu k, D-stabilní. Pro konstantní délku kroku, tj. když t n+ j = t n+ jτ, j =, 2,..., k, jsou koeficienty ABk metod pro k =, 2,..., 6, spolu s chybovými konstantami Ck+ a dolními mezemi αk intervalů absolutní stability (α k, 0), uvedeny v následující tabulce: k β k, β k,2 β k,3 β k,4 β k,5 β k,6 C k+ α k 2 2 2 3 2 2 3 4 23 6 2 2 55 59 24 24 90 5 2 774 720 720 4277 6 7 923 440 440 5 2 37 9 24 24 266 274 720 720 9982 7298 440 440 25 720 2877 475 440 440 5 2 3 8 8 25 3 720 0 95 90 288 55 9087 5 60480 57 Všimněte si, že AB metoda je totožná s EE metodou, tj. AB EE. Koeficienty ABk metod lze určit z formule k y n+ = y n + τ γj j f n, j=0 2
kde j je operátor zpětné diference, 0 f n = f n, f n = f n f n,... i f n = i f n i f n, i = 2, 3,.... a koeficienty γ j jsou definovány rekurentním předpisem γ 0 =, γ j = j i= γj i, j =, 2,.... i + Chybová konstanta Ck+ = γ k. Podrobnosti lze najít například v [2]. Adams-Moultonovy metody dostaneme, když v (.26) zvolíme j = 0,,..., k. Konstrukci polynomu P k (t) lze přehledně vyjádřit tabulkou t t n+ t n... t n+2 k P k (t) f n+ f n... f n+2 k Adams-Moultonovu metodu lze zapsat ve tvaru k y n+ = y n + τ β k,j f n+ j. j=0 Stručně ji budeme označovat jako AMk metodu. AMk metoda je implicitní, pro k = je jednokroková a pro k > je (k )-kroková, je řádu k a D-stabilní. Koeficienty AMk metod pro konstantní délku kroku a pro k =, 2,..., 6, spolu s chybovými konstantami C k+ a dolními mezemi α k intervalů absolutní stability (α k, 0), jsou uvedeny v následující tabulce: k β k,0 β k, β k,2 β k,3 β k,4 β k,5 C k+ α k 2 2 2 3 5 2 4 9 24 5 25 720 6 475 440 2 2 8 6 2 2 24 9 5 24 24 646 264 720 720 427 798 440 440 9 3 24 720 06 9 3 90 720 720 60 49 482 73 440 440 27 863 45 440 60480 38 Všimněte si, že AM metoda je totožná s IE metodou, tj. AM IE, a že AM2 metoda je totožná s TR metodou, tj. AM2 TR. Koeficienty AMk metod lze určit prostřednictvím formule k y n+ = y n + τ γ j j f n+, j=0 22
kde koeficienty γ j jsou definovány předpisem γ 0 =, γ j = γj γ j, i =, 2,.... Chybová konstanta C k+ = γ k. Podrobnosti viz [2]. Metody prediktor-korektor. AM metody jsou přesnější a stabilnější než AB metody. Nevýhodou AM metod je jejich implicitnost. Abychom určili y n+, musíme řešit rovnici k y n+ = ϕ(y n+ ), kde ϕ(z) = y n + τβ k,0 f(t n+, z) + τ β k,j f n+ j. Použít můžeme metodu prosté iterace: zvolíme počáteční aproximaci y (0) n+ a postupně počítáme y (s) n+ = ϕ(y(s ) n+ ), s =, 2,... Pro dostatečně malé τ metoda konverguje. Jestliže počáteční aproximaci y (0) n+ určíme pomocí AB metody, provedeme jen několik málo iterací y (s) n+ = ϕ(y(s ) n+ a nakonec položíme ), s =, 2,..., S, y n+ = y (S) n+, f n+ = f(t n+, y n+ ), dostaneme metodu prediktor-korektor, kterou schématicky označujeme P(EC) S E. Přitom P značí předpověd počáteční aproximace AB metodou, C korekci AM metodou a E vyhodnocení pravé strany f(t n+, y (s) n+ ). Zvolíme-li jako prediktor metodu ABk a jako korektor metodu AMk, dostaneme metodu, kterou značíme ABk-AMk-P(EC) S E. Její chybová konstanta je rovna chybové konstantě C p+ korektoru, oblast absolutní stability se blíží oblasti absolutní stability korektoru AMk až pro S. Nejčastěji se používá schéma PECE, kdy se korekce provede jen jednou a pravá strana se počítá dvakrát. V dalším se omezíme právě na schéma PECE. Abychom mohli řídit délku kroku, potřebujeme znát odhad est n lokální chyby. Jestliže yn+ y (0) n+ spočteme prediktorem ABk a yn+ y () n+ korektorem AMk, pak tzv. Milnův odhad lokální chyby dává j= est n = C k+ C k+ C k+ (yn+ y n+ ), (.27) odvození viz [2]. Nakonec položíme y n+ = y n+ + est n. (.28) Korekce y n+ pomocí odhadu lokální chyby est n se nazývá lokální extrapolace. Celý krok označujeme zkratkou ABk-AMk-PECLE, přičemž písmeno L vyznačuje použití lokální extrapolace. Metoda ABk-AMk-PECLE je řádu k +, oblast absolutní stability je větší než u prediktoru ABk ale menší než u korektoru AMk, viz [2], []. Alternativní odhad lokální chyby lze získat také tak, že y n+ spočteme metodou AM(k+) a položíme est n = y n+ y n+. (.29) 23
Výslednou metodu lze označit jako ABk-AM(k+)-PECE. Odhady (.28) a (.29) nejsou sice totožné, pro malé τ jsou však prakticky nerozlišitelné. Konkrétně pro metodu AB2-AM2-PECLE organizujeme výpočet následovně: P: AB2: y n+ = y n + 2 τ(3f n f n ) E: f n+ = f(t n+, y n+) C: AM2: y n+ = y n + 2 τ(f n+ + f n ) L: est n = 6 (y n+ y n+), y n+ = y n+ + est n E: f n+ = f(t n+, y n+ ). V případě AB2-AM3-PECE metody nahradíme řádek L řádkem C: AM3: y n+ = y n + 2 τ(5f n+ + 8f n f n ), est n = y n+ y n+. Startovací hodnotu y získat třeba pomocí EM2 metody. Řízení délky kroku a řádu metody. Kvalitní programy založené na metodách prediktor-korektor mění jak délku kroku tak řád metody. Tak například matlabovský program ode3 používá metody ABk-AM(k+)-PECE pro k =, 2,..., 2. Změna řádu se provádí současně se změnou délky kroku. Algoritmy tohoto typu se označují jako VSVO algoritmy (variable step variable order). Základní myšlenka je jednoduchá. Předpokládejme, že jsme vypočetli y n+ metodou ABk-AM(k+)-PECE s krokem délky τ. Určíme odhad est k n lokální chyby podle (.28) nebo (.29). Jestliže est k n > ε, jde o neúspěch a výpočet y n+ je třeba opakovat, v opačném případě pokračujeme výpočtem přibližného řešení y n+2. V každém případě je však třeba stanovit novou délku kroku a nový řád. Řád se může změnit nejvýše o jednotku, tj. v metodě ABk- AM(k+)-PECE místo k může být nově také k nebo k +. Odhady odpovídajících lokálních chyb est k n a est k+ n lze získat snadno, viz [22]. Nové délky kroků τk, τ k a τ k+ stanovíme podobně jako pro jednokrokovou metodu, τ l = θτ(ε/ estl n )/(l+) pro l = k, k, k +, a největší z čísel τk, τ k, τ k+ určí jak novou délku kroku tak nový řád. Konkrétně, je-li největší τk, k se nemění a jako novou délku kroku vezmeme τ = τk, je-li největší τk+, zvětšíme k o jedničku a pokračujeme s krokem délky τ = τk+ a je-li největší τ k, k o jedničku snížíme a pokračujeme s krokem délky τ = τk. Pro krok délky τ τ je třeba vypočítat hodnoty fn+ j pro t n+ j = t n+ jτ. To lze snadno provést interpolací pomocí f n+, f n,...,f n+ k. Podrobný popis strategie VSVO lze najít např. v [2], [22]. Start metody není žádný problém: začneme metodou AB-AM2-PECE, počáteční délku kroku určíme např. podle (.23) a algoritmus VSVO se už sám rychle vyladí na správné hodnoty jak délky kroku tak řádu metody..4.3. Metody zpětného derivování Při řešení tzv. tuhých problémů je třeba pracovat s metodami, které se vyznačují neomezenou oblastí absolutní stability. Metody zpětného derivování (stručně BDF podle 24
backward differentiation formulas) tuto vlastnost mají. Pro k-krokovou metodu zpětného derivování použijeme zkrácený zápis BDFk metoda. Dostaneme ji tak, že v rovnici y (t n+ ) = f(t n+, y(t n+ )) nahradíme derivaci y (t n+ ) pomocí derivace P k (t n+) interpolačního polynomu P k (t) stupně k procházejícího body [t n+, y(t n+ )], [t n, y(t n )],...,[t n+ k, y(t n+ k )]. Když pak nahradíme y(t n+ j ) přibližnými hodnotami y n+ j, j = 0,,..., k, dostaneme metodu P k(t n+ ) = f(t n+, y n+ ). Přehledné vyjádření aproximujícího polynomu P k (t) uvádí následující tabulka t t n+ t n... t n+ k P k (t) y n+ y n... y n+ k BDFk metodu zapíšeme ve tvaru k α k,j y n+ j = τβ k,0 f n+. j=0 Metoda BDFk je implicitní, k-kroková, řádu k, pro k 6 je D-stabilní. Pro konstantní délku kroku jsou koeficienty α k,j, β k,0 a chybové konstanty C k+ BDFk metod uvedeny v následující tabulce: k α k,0 α k, α k,2 α k,3 α k,4 α k,5 α k,6 β k,0 C k+ α k 2 90 2 4 3 3 8 4 48 25 5 300 37 6 360 47 3 9 2 36 6 25 25 300 200 37 37 450 400 47 47 3 25 75 2 37 37 225 72 47 47 0 47 2 3 2 9 90 6 3 88 22 2 2 73 25 25 60 0 52 37 37 60 20 8 47 343 Koeficienty BDFk metody lze získat prostřednictvím předpisů δ k k j= j j y n+ = τ δ k f n+, δ k = k j= j, C k+ =, (k + )δ k podrobnosti viz např. [2] BDFk metody jsou implicitní a ve srovnání s implicitními AMk metodami mají značně větší chybové konstanty. Na druhé straně však metody zpětného derivování mají jednu ohromnou přednost, která plně ospravedlňuje jejich používání, a tou je neomezená oblast R A absolutní stability. Pro metody BDF a BDF2 oblast R A absolutní stability obsahuje 25
celou zápornou polorovinu komplexní roviny C, tj. R A {z C Rez < 0}. Takové metody se nazývají A-stabilní. Abychom mohli popsat oblast absolutní stability zbývajících BDFk metod, zavedeme si jeden nový pojem. Řekneme, že numerická metoda je A(α)-stabilní, α (0, π/2, jestliže její oblast absolutní stability R A obsahuje nekonečný klín W α = {re iϕ C r > 0, ϕ π < α}. BDFk metody jsou (pro k 6) A(α)-stabilní, příslušné úhly α k (pro větší názornost ve stupních) jsou uvedeny jako poslední sloupec výše uvedené tabulky. BDFk metody (pro k 6) jsou dokonce L(α)-stabilní. L(α) stabilní metodu přitom definujeme jako A(α)-stabilní metodu, pro kterou z podmínek π(ξ, z) = 0 a Re(z) plyne ξ 0. Pro α = π dostáváme L-stabilní metodu. BDF a BDF2 jsou tedy L-stabilní. 2 Úhel 8 metody BDF6 je příliš malý a proto se tato metoda obvykle nepoužívá. V matlabovském programu ode5s jsou implementovány metody zpětného derivování řádů až 5. Program ode5s je typu VSVO, tj. volí optimální délku kroku i řád metody. Základní metodou programu ode5s je metoda NDF (podle numerical differentiation formula). NDFk metody jsou modifikace BDFk metod, mají o něco menší chybové konstanty (o 26% pro k =, 2, 3 a o 5% pro k = 4 ) a poněkud menší úhly A(α) stability (o 7% pro k = 3 a o 0% pro k=4) než odpovídající BDFk metody. Podrobnosti týkající se NDFk metod lze najít v [24]. Nelineární rovnice pro výpočet y n+ se řeší pomocí několika málo kroků Newtonovy metody..5. Tuhé problémy Tuhý počáteční problém (v anglicky psané literatuře stiff problem) se vyznačuje několika charakteristikami, z nichž dvě si postupně uvedeme. Praktická a snadno ověřitelná je Charakteristika. Počáteční problém je tuhý, když počet kroků potřebných k jeho vyřešení metodou s omezenou oblastí absolutní stability je podstatně větší než počet kroků, který k jeho vyřešení potřebuje metoda s neomezenou oblastní absolutní stability. Platnost této charakteristiky ukážeme na příkladu počátečního problému Příklad. ( ) ( y = y 2 0 000 00 ) ( ) y, x (0, l), y 2 ( ) ( y (0) = y 2 (0) ). (.30) Řešení je y = e t, y 2 = e t. Úlohu (.30) jsme řešili matlabovským programem ode45 (DP54 metoda řádu 5 s omezenou oblastí absolutní stability) a matlabovským programem ode5s (BDF metody VSVO řádů -5 s neomezenými oblastmi absolutní stability). Oba programy jsme použili se stejným požadavkem na přesnost: ε r = 0 3 a ε a = 0 6. Efektivnost obou metod lze přibližně porovnat podle počtu úspěšně provedených kroků pk a počtu pf vyhodnocení pravé strany. V následující tabulce jsou uvedeny hodnoty pk/pf pro několik délek l intervalu integrace. 26
l 0 2 0 0 0 0 0 2 ode45 0/6 22/5 269/ 747 2 953/8 99 30 07/92 475 ode5s 0/24 0/24 2/28 42/88 7/46 Pro malé l = 0 2 se na intervalu 0; 0 2 řešení poměrně rychle mění. Délku kroku zde určuje požadavek na přesnost a protože obě metody jsou téhož řádu, potřebují přibližně stejný počet kroků. Jak však l vzrůstá, délku kroku stále více začíná ovlivňovat podmínka stability. Abychom tomuto efektu lépe porozuměli, potřebujeme několik dalších poznatků. Stabilní problém. Počáteční problém y = f(t,y),y(a) = η, je stabilní, když malá změna dat f, a, η způsobí malou změnu řešení y. Zabývejme se speciálně stabilitou vzhledem k počáteční podmínce, konkrétně jak změna počáteční hodnoty η ovlivní řešení y. Pro jednoduchost uvažujme počáteční problém y = Ay, y(a) = η, (.3) kde A je číselná matice řádu d. Necht u je řešení problému (.3) a v je řešení téže diferenciální rovnice, avšak s porušenou počáteční podmínkou, tj. u = Au, u(a) = η, v = Av, v(a) = η + δ. Pro w = u v dostaneme problém w = Aw, w(a) = δ, který popisuje šíření počáteční poruchy δ. Předpokládejme, že matice A má navzájem různá vlastní čísla {λ j } d j=. Pak w(t) = d c j e λj(t a) v j, j= kde v j jsou vlastní vektory příslušné vlastním číslům λ j a c j jsou konstanty, které určíme z počáteční podmínky: Vc = δ, kde V = (v,v 2,...,v d ), c = (c, c 2,..., c d ) T. Můžeme tedy vyslovit tyto závěry: ) Jestliže Re(λ j ) < 0 pro všechna j, pak w(t) 0 exponenciálně pro t, tj. porucha se velmi rychle zmenšuje. 2) Jestliže Re(λ j ) 0 pro všechna j, pak w(t) V V δ, tj. porucha bude omezená, přitom w(t) 0 pro δ o. 27
3) Jestliže nějaké vlastní číslo λ j má kladnou reálnou složku a počáteční porucha δ je taková, že c j 0, pak w(t) exponenciálně pro t, tj. porucha se velmi rychle zvětšuje. Problém (.3) je tedy stabilní (vzhledem k počáteční podmínce), jestliže všechna vlastní čísla matice A mají nekladnou reálnou složku. Spektrální poloměr. Označme symbolem (A) spektrální poloměr matice A definovaný jako velikost největšího vlastního čísla A, tj. (A) = max j=,2,...,d λ j, kde λ j, j =, 2,..., d, jsou vlastní čísla A. Nyní již můžeme zformulovat další charakteristika tuhého systému. Charakteristika 2. Stabilní problém je tuhý, jestliže součin spektrálního poloměru Jacobiovy matice f y (t,y) = { f i (t,y)/ y j } d i,j= a délky intervalu integrace b a je velký, tj. když max (f y(t,y(t)))(b a). (.32) a t b Vrat me se nyní k úloze (.3). Pro f = Ay je f y (t,y) = A. Problém (.3) je tedy tuhý, pokud všechna vlastní čísla matice A mají nekladnou reálnou složku a (A)(b a) je velké číslo. Jsou-li všechna vlastní čísla matice A jednoduchá a mají zápornou reálnou složku, pak pro řešení y(t) úlohy (.3) platí y(t) o pro t. Řešíme-li takovou úlohu numericky, pak snadno dokážeme, že podmínka stability y n o pro t n = nτ platí, právě když {λ τ, λ 2 τ,...,λ d τ} R A, (.33) kde R A je oblast absolutní stability uvažované numerické metody. Příklad. pokračování. Pravá strana diferenciální rovnice je ( ) 0 f = Ay, kde A = 000 00 Vlastní čísla A jsou λ =, λ 2 = 000, takže (A) = 000. Jde o stabilní problém (vlastní čísla A jsou záporná) a pro větší l je (A)(b a) = 000 l, tj. jde o tuhý problém. Metoda DP54 má interval absolutní stability ( 3,3; 0), takže podmínka stability (.33) vyžaduje, aby 3,3 < 000τ, tj. τ < 0,0033. Na intervalu délky L je tak třeba n L > L/0,0033 kroků délky menší než 0,0033, což je v souladu s tabulkou uvedenou v první části příkladu.. Skutečně, na intervalu 0; 00 délky 90 je třeba alespoň 90/0,0033. = 27 90 kroků délky 0,0033, ve skutečnosti program ode45 provedl přibližně stejný počet 30 07 2 953 = 27 8 kroků proměnné délky. Protože přesná řešení y = e t a y 2 = e t jsou na intervalu 0; 00 téměř konstantní, rovná nule, je zřejmé, že délka kroku je omezena z důvodu stability a ne z důvodu přesnosti.. Příklad.2 Uvažujme počáteční problém y = y 2 y 3, t (0, 2/δ), y(0) = δ. (.34) 28