Eötvös Loránd Tudományegyetem Természettudományi Kar Molnár Viktória Matematika Bsc - Alkalmazott matematikus szakirány Közönséges differenciálegyenletek numerikus megoldása Egylépéses módszerek Témavezet : Kurics Tamás Alkalmazott Analízis és Számításmatematikai Tanszék Budapest, 00
Köszönetnyílvánítás Szeretném kifejezni köszönetemet a szakdolgozat elkészítéséhez nyújtott segítségéért témavezet mnek, Kurics Tamásnak. Továbbá hálával tartozom tankörtársaimnak a L A TEX szövegszerkeszt alkalmazásánál nyújtott segítségükért. i
Tartalomjegyzék. Bevezetés. Euler-módszerek 4.. Explicit Euler-módszer............................. 4.. Implicit Euler-módszer............................. 6 3. Javított Euler-módszerek 8 3.. Trapézformulával javított Euler-módszer................... 8 3.. Érint formulával javított Euler-módszer................... 9 3.3. θ-módszer.................................... 0 4. RungeKutta-módszerek 4.. Kétlépcs s RungeKutta-módszer....................... 4 4.. Háromlépcs s RungeKutta-módszer..................... 5 4.3. Általános RungeKutta-módszer együtthatói................. 7 4.4. Négylépcs s RungeKutta-módszer...................... 9 4.5. Folytonos RungeKutta képletek....................... 9 5. Beágyazott módszerek 5.. Richardson-extrapoláció............................ 5.. RungeKuttaFehlberg-módszerek....................... 3 5.3. Lépésválasztás.................................. 5 5.4. Módszerek a gyakorlatban........................... 6 6. Összefoglalás 30 ii
. fejezet Bevezetés A gyakorlati életben s r n el fordulnak olyan feladatok, melyekhez dierenciálegyenletek megoldása szükséges. Ezek között is el fordul olyan probléma, melynél analitikus módszerekkel nem tudunk célt érni. A számítástechnika fejl désének köszönhet en ezeket a feladatokat is meg tudjuk oldani, vagy ha pontosan nem ismerjük a megoldást, de azért közelít becslést kaphatunk róla. Vegyünk például egy ejt erny st, aki t = 0 id pontban kiugrik egy repül gépb l és a kezdeti magassága legyen y = y 0. Az egyszer ség kedvéért feltesszük, hogy csak függ legesen mozog. Az ugróra két er hat: a gravitáció és a légellenállás. Newton második törvénye szerint a következ egyenletet kapjuk az ugró függ leges gyorsulására: mÿ = mg + mcẏ, ahol m az ejt erny s tömege, g a gravitációs er, c alaki tényez. A newtoni modellben az ejt erny s mozgását ez a másodrend dierenciálegyenlet írja le. Ezt visszavezethetjük két els rend dierenciálegyenletre a következ módon: a sebességet jelöljük v-vel. Ekkor v = ẏ miatt v = ÿ. Ha leosztunk m-mel, akkor a következ egyenletrendszert kapjuk: ẏ = v v = g + cv. Ha hozzávesszük még a kezdeti feltételt is, akkor már egyértelm megoldást kapunk. Az egyenletrendszert nem tudjuk megoldani analitikusan, így szükség van a numerikus számításokra. De miel tt erre részletesebben kitérnénk, nézzük meg, hogy általános eset-
ben hogyan vezethet vissza egy p-edrend közönséges dierenciálegyenlet els fokú rendszerre. Legyen F (t, y, ẏ,..., y (p) ) = 0 adott kezdetiértékek mellett y (s) (t 0 ) = y (s) 0, ahol s = 0,,..., p. Az y (p) kifejezhet (az implicit függvény tétel segítségével) a p-edrend egyenletb l: y (p) (t) = G(t, y, ẏ,..., y (p ) ). Vezessünk be új változókat: z, z,..., z p a következ értékekkel: Innen: Tehát z = y, z = ẏ,. z p = y (p ). z = ẏ = z, z = ÿ = z 3,. ż p = y (p ) = z p. z (t) = z (t) z (t) = z 3 (t). ż p (t) = z p (t) z p (t) = G(t, z (t),..., z p (t)) a z-re egy els rend közönséges egyenletrendszert kaptunk. A továbbiakban a következ közönséges dierenciálegyenletekb l álló rendszert szeretnénk megoldani y (x) = f(x, y(x)), (.)
ahol f : R n+ R n, és x R, y R n. Feltesszük továbbá, hogy f folytonos az x- ben, és Lipschitz-folytonos az y-ban. Így a kezdeti feltétel y(x 0 ) = y 0 hozzávételével, a PicardLindelöf tétel alapján egyértelm megoldást kapunk. Ha az (.) egyenlet jobb oldala nem függ az y-tól és például n =, akkor az y = f(x) egyenlet ekvivalens az integrálegyenlettel. y(x) = y 0 + x 0 f(t)dt 3
. fejezet Euler-módszerek.. Explicit Euler-módszer Nézzük (.)-et n = -re, és a [0, ] intervallumon keressük a megoldását. Osszuk fel ekvidisztánsan az intervallumot úgy, hogy jelölje x 0 = 0 a kezd pontot, és x k = x 0 + kh a bels pontokat, k = 0,..., N, ahol h = /N. Itt N egész szám, és h a lépésköz. Ha minden kis intervallumon közelítjük y (x k )-t a dierenciálhányadosával, akkor a következ t kapjuk: y(x k + h) y(x k ) h y (x k ) = f(x k, y(x k )), amib l úgy kapjuk a numerikus értékeket, ha egyenl séget teszünk. Szokás a numerikus értékeket y k -val jelölni, a pontos értékeket y(x k )-val. kapjuk, hogy y k+ y k h = f(x k, y k ). Ezeket a jelöléseket alkalmazva Ha megszorozzuk h-val, és átrendezzük az egyenletünket, akkor megkapjuk az úgynevezett haladó vagy explicit Euler-módszert: y k+ = y k + hf(x k, y k ). Vezessünk be néhány deníciót:. Deníció. Legyen x [0, ] egy rögzített pont. Osszuk fel a [0, ] intervallumot n részre úgy, hogy x az osztópontok között szerepeljen. Egy numerikus módszert az (.) megoldására akkor hívunk konvergensnek, ha egy adott függvényosztályból minden f-re, 4
minden y 0 = y(0) kezdeti értékre és minden rögzített x pontjára igaz, hogy ha n, vagyis nomítjuk a felosztást, akkor y n y(x ). A konvergencia-vizsgálat érdekében deniáljuk a módszer lokális hibáját.. Deníció. Az Euler-módszer képlethibájának vagy lokális hibájának hívjuk a következ mennyiséget: g k := y(x k+) y(x k ) h ahol y(x) (.) pontos megoldását jelenti. f(x k, y(x k )), (.) A lokális hibát becsülhetjük anélkül, hogy ismernénk a pontos megoldást. Alkalmazzuk kétszer a Lagrange-féle középérték tételt: g k = y (ξ k ) y (x k ) = y (τ k )(ξ k x k ) h max y (x), ahol ξ k (x k, x k+ ) és τ k (x k, ξ k ). 3. Deníció. A numerikus módszert konzisztensnek hívjuk, ha minden 0 k N-re igaz g k = O(h p ), ahol p > 0. A legnagyobb egész p-t a módszer konzisztencia rendjének nevezzük. A lokális hibabecslésb l azonnal látszik, hogy az Euler-módszer els rendben konzisztens. 4. Deníció. A módszer globális hibájának nevezzük a pontos és a számított érték különbségét: e k := y(x k ) y k k = 0,,..., N. A globális hiba becslése: Ha (.)-t beszorozzuk h-val és átrendezzük, a következ pontos értéket kifejezve kapjuk a következ egyenletet: y(x k+ ) = y(x k ) + hf(x k, y(x k )) + hg k. Ebb l kell kivonni a közelít értékekkel kapott megoldást: y k+ = y k + hf(x k, y k ). Vagyis e k+ -re azt kapjuk, hogy e k+ = e k + h(f(x k, y(x k )) f(x k, y k )) + hg k. 5
Kihasználva, hogy f Lipschitz-folytonos a második változójában, kapjuk a következ becslést: e k+ e k + hl f e k + h g k = ( + hl f ) e k + h g k. Ezt tovább becsülve: e k+ ( + hl f ) e k + h g k + ( + hl f )h g k k... ( + hl f ) k+ e 0 + ( + hl f ) k i h g i i=0 ( + hl f ) k+( k e 0 + h g i ). Az ( + hl f )-et felülr l tudjuk becsülni (e h L f )-el az e h Taylor sorfejtéséb l adódóan, így i=0 ( + hl f ) k+ e (k+)hl f e NhL f Nh pedig pont az intervallumunk hossza, ami jelen esetben. Ezáltal e L f -et kapjuk, ami egy rögzített C konstans. Ebb l adódik a következ deníció: 5. Deníció. Egy numerikus módszert stabilnak nevezünk, ha f Lipschitz-folytonos, és ha igaz a következ becslés: ahol C konstans. e k+ C ( e 0 + k h g i ), i=0. Tétel. Egy numerikus módszer akkor konvergens, ha minden k-ra e k = O(h p ) teljesül. Ekkor a konvergencia rendje p.. Állítás. Ha a módszer p-edrendben konzisztens és stabil, akkor konvergens is, és a konvergencia rendje megegyezik a konzisztencia rendjével... Implicit Euler-módszer Az Euler-módszer másik változatát úgy kaphatjuk, hogy y (x k+ )-et helyettesítjük az Euler-módszernél látott dierenciálhányadossal. Ezt az úgynevezett hátralép vagy implicit Euler-módszernek nevezzük. y(x k + h) y(x k ) h y (x k+ ) = f(x k+, y(x k+ )) 6
h-val való szorzás, és átrendezés után így néz ki az implicit Euler-módszer: y k+ = y k + hf(x k+, y k+ ). Hátránya az Euler-módszerrel szemben, hogy minden lépésben egy nemlineáris egyenletet kell megoldanunk. Állapítsuk meg a módszer rendjét! Ehhez tekintsük a g k értékét: g k := y(x k+) y(x k ) h f(x k+, y(x k+ )). Szinte szó szerint elismételhetjük az Euler-módszernél látottakat, vagyis alkalmazzuk kétszer a Lagrange-féle középérték tételt: g k = y (ξ k ) y (x k+ ) = y (τ k )(ξ k x k+ ) h max y (x), ahol ξ k (x k, x k+ ) és τ k (ξ k, x k+ ) tetsz leges. A módszer így szintén els rend. 7
3. fejezet Javított Euler-módszerek Felmerül a kérdés, hogy hogyan kaphatnánk magasabb rendben konzisztens megoldást. Tudnánk-e javítani az Euler-módszert? Az (.) kezdeti érték feladatunk pontos megoldását így is megkaphatjuk: y(x k+ ) y(x k ) = xk+ x k f(t, y(t))dt. (3.) Viszont, ahogy már a korábbiakban említettük, nem mindig tudjuk ezt megoldani, így hát az integrált is numerikusan fogjuk közelíteni kvadratúraformulával. 3.. Trapézformulával javított Euler-módszer Maga a trapézformula: xk+ F (t)dt h x k melynek hibája O(h 3 ). Így kapjuk, hogy xk+ x k f(t, y(t))dt = h ( F (xk ) + F (x k+ ) ) ( f(xk, y(x k )) + f(x k+, y(x k+ )) ) + O(h 3 ). Ha ezt írnánk be (3.)-be, akkor nem explicit formulát kapnánk y(x k+ ) miatt. Ennek kiküszöbölésére az ötlet a következ : fejtsük Taylor-sorba y(x k+ )-t x k körül. Tehát y(x k+ ) = y(x k ) + hy (x k ) + O(h ). Vegyük észre, hogy az itt szerepl y (x k ) egyenl f(x k, y(x k ))-val. És ha itt végig y(x k ) közelít értékével, vagyis y k -val számolunk, és beírjuk az eddigi eredményeket a (3.)-es 8
képletbe, akkor megkapjuk a trapézformulával javított Euler-módszert: y k+ = y k + h (f(x k, y k ) + f(x k+, y k + hf(x k, y k )). (3.) Lássuk, hogy ennek a módszernek mekkora a rendje: a rend meghatározásához ismét a lokális hibatagot kell vizsgálnunk, ami g k = y(x k+) y(x k ) h [f(x k, y(x k )) + f(x k+, y(x k ) + hf(x k, y(x k )))]. }{{} Kezdjük el el ször átalakítani a kapcsos részt. Tudjuk, hogy y (x k ) = f(x k, y(x k )), és észrevesszük, hogy ha ezt a helyettesítést végrehajtanánk y(x k ) + hf(x k, y(x k ))-ban, akkor f második argumentumában pont az y(x k+ ) Taylor-sorának elejét kapnánk. Ezért még hozzá kell vennünk O(h )-et, és végül b vítsük h-val ezt a részt. A kapott érték a következ : h [f(x k, y(x k )) + f(x k+, y(x k+ ))] + O(h 3 ) = Így a kapott hibatag: g k = y(x k+) y(x k ) h = y(x k+) y(x k ) h h xk+ x k xk+ x k f(t, y(t))dt + O(h 3 ). f(t, y(t)) dt + O(h ) = }{{} y (t) h (y(x k+) y(x k )) + O(h ) = O(h ). Ezek alapján a trapézformulával javított Euler-módszer másodrendben konzisztens. 3.. Érint formulával javított Euler-módszer Másik módszer a javításra az érint formula alkalmazása, ami pedig a következ : xk+ F (t)dt hf (x k+ ). x k Ezt alkalmazva a függvényünkre kapjuk, hogy xk+ x k f(t, y(t))dt = hf ( x k+, y(x k+ ) ) + O(h 3 ). Ugyanúgy mint az el bb, fejtsük Taylor sorba y(x k+ )-t x k körül: xk+ f(t, y(t))dt = hf(x k+, y(x k ) + h x k f(x k, y(x k ))) + O(h 3 ). 9
Az ötlet megint ugyanaz, vagyis cseréljük ki a pontos értékeket a közelít kre. Tehát az érint formulával javított Euler-módszer a következ lesz: y k+ = y k + hf(x k+, y j + h f(x k, y k )). Mivel egy ugyanolyan O(h 3 ) hibájú módszerrel javítottunk, ezért az a sejtésünk, hogy a javítás mértéke is ugyanolyan lesz. Lássuk precízen g k értékét: g k = y(x k+) y(x k ) h f(x k+, y(x k )) + h f(x k, y(x k )). }{{} Vessük be ugyanazokat a trükköket, mint az trapézformulával javított módszernél. A kapcsos rész így alakul: hf ( x k+, y(x k + )) + O(h ). Az egészet tekintve ismét azt kapjuk, hogy másodrend a javítás, mivel g k = y(x k+) y(x k ) h = y(x k+) y(x k ) h h xk+ x k f(t, y(t)) dt + O(h ) = }{{} y (t) h (y(x k+) y(x k )) + O(h ) = O(h ). 3.3. θ-módszer Az Euler- és a trapéz-módszer speciális esetei az úgynevezett θ-módszernek: A θ = és θ = y k+ = y k + h[θf(x k, y k ) + ( θ)f(x k+, y k+ )], k = 0,,.... esetben az eredeti képletek adódnak. Különböz θ [0, ]-re különböz módszereket kapunk, ami egyedül θ = -ra lesz explicit, minden más esetben pedig implicit. Például θ = 0 esetben az implicit Euler-módszert kapjuk vissza. Tekintsük a lokális hibatagot, a rend meghatározásához: g k = y(x k+) y(x k ) h = y(x k+) y(x k ) h Használjuk fel y(x k+ ) sorfejtését: ( θf(x k, y k ) + ( θ)f(x k+, y k+ ) ) = ( θy (x k ) + ( θ)y (x k+ ) ). y(x k ) + hy (x k ) + h y (x k ) + 6 h3 y (3) (x k ) + O(h 4 ). 0
Emiatt a hiba: g k = h [y(x k) + hy (x k ) + h y (x k ) + 6 h3 y (3) (x k ) y(x k )] ( θy (x k ) + ( θ)[y (x k ) + hy (x k ) + h y (3) (x k )] ) + O(h 3 ) = = ( θ ) hy (x k ) + ( θ ) h y (3) (x k ) + O(h 3 ). 3 Tehát a módszer másodrend, ha θ =, különben meg els rend.
4. fejezet RungeKutta-módszerek Az eddigiekben láthattuk, hogy a kvadratúra formulák segítségével javítani tudtunk a módszer rendjén. Ezen az ötleten alapszanak a RungeKutta-módszerek is. Tekintsük újra (3.)-et. Ezt tovább alakítva általánosan kapjuk a következ ket: y(x n+ ) y(x n ) = xn+ x n f(t, y(t))dt = h 0 f(x n + ht, y(x n + ht))dt. Ha helyettesítjük az így kapott integrált valamilyen kvadratúrával, és a közelít értékeket beírjuk, akkor újabb módszereket nyerhetünk: m y n+ = y n + h b j f(x n + c j h, y(x n + c j h)), n = 0,,... j= ahol b j -k és c j -k megfelel súlyok. Ezek a számok határozzák majd meg, hogy melyik módszerr l is beszélünk. Viszont nem ismerjük y értékeit az x n + c h, x n + c h,... pontokban. Az explicit RungeKutta-módszerek ötlete, hogy az y(x n + c j h) értékeket approximáljuk a következ módon. Kezdetnek legyen c = 0 és vezessük be rekurzívan a következ számokat: ξ = y n, ξ = y n + ha, f(x n, ξ ), ξ 3 = y n + ha 3, f(x n, ξ ) + ha 3, f(x n + c h, ξ ),. ξ m = y n + h m j= a m,j f(x n + c j h, ξ j ),
íly módon az m y n+ = y n + h b j f(x n + c j h, ξ j ) (4.) j= képlet adódik. Az A = (a i,j ) i,j=,,...,m mátrixot RungeKutta-mátrixnak nevezzük, és a hiányzó elemeit nullának deniáljuk. A további együtthatókat vektorokba rendezhetjük: b = [b b... b m ], c = [c c... c m ]. Azt mondjuk, hogy ez a módszer úgynevezett m-lépcs s explicit RK-módszer, mert ennyi lépcs ben értékeljük ki f-et, hogy megkaphassuk y n+ értékét. Ennek a módszernek egy természetesen adódó általánosítása, ha az A együttható mátrix nem csupán alsó háromszög. Ilyenkor minden lépésben egy nemlineáris rendszert kell megoldanunk. Ezt hívjuk implicit RungeKutta-módszernek. Mindkét típusú módszernél az együtthatók tárolására úgynevezett Butcher-táblát használunk: c T A b. Továbbiakban csak az explicit RK-módszerekról lesz szó. Ebben az esetben így néz ki kifejtve a Butcher-tábla: 0 c a, c 3 a 3, a 3,..... c m a m, a m,... a m,m b b... b m b m A módszer stabilitásáról egy tételt fogalmazunk meg [6] könyv alapján, ami hasonló módszerrel látható be, mint a javított Euler-módszereknél.. Tétel. (általános explicit RungeKutta-módszer stabilitása) Legyen f a második változójában lokálisan Lipschitz, L f (4.)-ben deniált módszer stabil, mert érvényes a következ becslés: ( k ) e k e L Φ e 0 + g i h. 3 i=0 Lipschitz-állandóval. Ekkor a
Itt L Φ = L f ( m j= ) c j + P m (hl f ), és a P m (hl f ) tag a hl f mennyiség (m )-edfokú polinomja, amire igaz, hogy P m (hl f ) = O(hL f ). Már csak az maradt hátra, hogy hogyan is válasszuk meg a c j -ket, b j -ket, a i,j -ket, és hogy mekkora lesz az egyes módszerek rendje m függvényében. 4.. Kétlépcs s RungeKutta-módszer Nézzük az egyik legegyszer bb nemtriviális esetet, amikor m =, vagyis egy kétlépcs s RK-módszert: y n+ = y n + hb f(x n + c h, y n ) + hb f(x n + c h, y n + ha, f(x n, y n )). (4.) Az összeg utolsó tagját fejtsük Taylor sorba (x n, y n )-körül: f(x n +c h, y n +ha, f(x n, y n )) = f(x n, y n )+h[c f x (x n, y n )+a, f y (x n, y n )f(x n, y n )]+O(h ), majd ezt visszaírva (4.)-be kapjuk a következ összefüggést: y n+ = y n + h(b + b )f(x n, y n ) + h b [c f x (x n, y n ) + a, f y (x n, y n )f(x n, y n )] + O(h 3 ). (4.3) Össze kell vetnünk ezt az egyenletet, a pontos értékkel ugyanabban az (x n, y n ) pontban. Az y els deriváltját ki tudjuk fejezni f-el, de lássuk, hogy néz ki a második derivált: y = f x + f y f. Így, ha az x n+ -ben kapott pontos megoldás sorfejtését ỹ(x n+ )-el jelöljük, akkor azt kapjuk, hogy ỹ(x n+ ) = y n + hf(x n, y n ) + h [f x (x n, y n ) + f y (x n, y n )f(x n, y n )] + O(h 3 ). Azt szeretnénk, ha ez megegyezne (4.3)-al. Innen kapjuk az egyenletrendszert az együtthatókra: b + b = b c = a, = c. 4
Ebben a konkrét esetben az egyenletrendszernek nincs egyértelm megoldása, mint ahogy általában sincs, mert több az ismeretlen, mint az egyenlet. mutatunk két megoldást az alábbi két Butcher-táblában: De azért példának 0 0 0 0 0 0 0 Ezekben a táblázatokban rendre felismerhetjük a trapéz- és érint formulával javított Euler-módszert, aminek már ismerjük a rendjét. Így a kétlépcs s RK-módszer stabil és a rendje megegyik a lépcs k számával. 4.. Háromlépcs s RungeKutta-módszer Azt reméljük, hogy a háromlépcs s módszer nagyobb rendben lesz konzisztens. Az el z technika segítségével kiszámolható a háromlépcs s módszer Butcher-táblája. Másodrendig kell Taylor-sorba fejteni az összeg második és harmadik tagját, és kifejezni y (3) -ot, vagyis y harmadik deriváltját, ugyanis szükség lesz rá az ỹ(x n+ ) sorfejtésénél. Majd ezeket kell összevetni. Már itt m = 3 esetén is elég hosszadalmas kiszámítani az egyenletrendszert, de kés bbiekben mutatunk rá egy egyszer bb sémát. A kapott egyenletrendszer a következ : b + b + b 3 = b c + b 3 c 3 = b c + b 3 c 3 = 3 b 3 a 3, c =. 6 Több megoldás lehet itt is, példának nézzük a következ két Butcher-táblát: 0 0 3 3 0 3 3 6 3 6 4 3 8 3 8 Ezek alapján általánosan azt vesszük észre, hogy m j= b j =, ugyanis emiatt lesz egyáltalán konzisztens a módszer. A következ egyenl ségek pedig megkönnyítik a szá- 5
molást: c = a,, c 3 = a 3, + a 3,,..., vagyis tegyük fel (c i = i j= a i,j)-t minden explicit RungeKutta-módszerre. Ezek után lássuk a háromlépcs s módszer rendjét. A y(x n+ ) y(x n ) h 3 j= b jf(x n + c j h, ξ j ) sorfejtésének hibatagja O(h 4 ), tehát a g n lokális hiba harmadrend és a módszer globális hibája O(h 3 ). A p-edrend módszer lokális hibája minden lépcs ben ugyanannyi (persze h-tól függ en), ezért nézhetjük az els intervallum végpontjaiban: e(h) = y(x 0 + h) y. Fejtsük Taylor-sorba e(h)-t 0-körül e(h) = e(0) + he (0) + + hp p! e(p) (θh), ahol 0 < θ <, és e(0) = e (0) = = e (p) (0) = 0. Viszont e (p) (h) pontos értékét a következ alakban kapjuk: e (p) (h) = E (h) + he (h), ahol E (h) és E (h) tartalmazzák f parciális deriváltjait (p )- és p-edrendig. Mivel e (p) (0) = 0, ezért E (0) = 0 és mivel f parciális deriváltjai adottak, ezért E (h) csak O(h) és E csak O() lehet. Tehát létezik olyan C konstans, hogy e(h) Ch és e(h) C hp+. p! Azt hihetnénk, hogy minél nagyobb a lépcs szám, annál nagyobb lesz a rend, de azért ez nem egészen van így. A következ összefüggések ismertek a lépcs szám m és az elérhet p(m) rend között: m 4 : p(m) = m m 5 : p(m) m m 8 : p(m) m m 0 : p(m) m 3. Az m és p(m) közötti hézag éppen azzal kapcsolatos, hogy f függvény y-tól is függ. 6
4.3. Általános RungeKutta-módszer együtthatói Már ilyen kis lépcs számnál is nehezen számolhatók ki a RungeKutta-módszer együtthatói, de szerencsére van rá minta, hogy ez általánosságban hogyan is m ködik. Meglep lehet, de nem más, mint a gráfelmélet adott választ a kérdéseinkre. Legyen T gyökeres fák egy halmaza, ami alatt olyan irányítatlan körmentes gráfokat értünk, aminek van egy kitüntetett csúcsa: a gyökér. Továbbá egy fa (t) rendjén a csúcsainak a számát fogjuk érteni. Ha nagyobb, mint els rend fáról van szó, akkor levelek alatt azokat a csúcsokat értjük, ami nem gyökér, és ami pontosan egy éllel csatlakozik a fához. A fán adott egy rendezés, miszerint a gyökércsúcs legyen a legalsó, a bel le lépésben elérhet csúcsok legyenek a gyerekei. Szül csúcsok pedig értelemszer en az egy lépéssel elérhet leljebb lév csúcsok. Két azonos rend fát ekvivalensnek mondunk, ha az utak ugyanazt a mintát követik a fa tetejét l az aljáig. A következ ábra ekvivalens fákat ábrázol. Szükségünk van y egyre magasabb deriváltjaira - elég arra az esetre szorítkozni, mikor f nem függ x-t l -, amik -t l 4-ig a következ képp néznek ki: y = f(y) y = f y (y)f(y) y (3) = f yy (y)[f(y)] + [f y (y)] f(y) y (4) = f yyy (y)[f(y)] 3 + 4f yy (y)f y (y)[f(y)] + [f y (y)] 3 f(y) Ha mondjuk a k-adik deriváltra van szükségünk, akkor vegyünk egy k csúcsból álló fát az összes lehetséges nem ekvivalens módon. Egy fa csúcsainak feleltessük meg f annyiadik deriváltját, ahány gyereke van, majd ezeket szorozzuk össze minden egyes fán, és adjuk össze ket. Az ábrán egy példa látható: 7
f f f f f yy f yyy f y f yyy f yy fy f 4 Ha már a deriváltakat el állítottuk, akkor már csak az együtthatókat kell nekik megfeleltetni. Egyrészr l minden fa meghatároz egy polinomot - jelöljük Φ(t)-vel -, amib l az együtthatókat nyerjük majd ki, másrészr l pedig minden t-hez hozzárendelünk egy természetes számot, amit jelöljünk γ(t)-vel. Lássuk a konstrukciót! Indexeljük meg a csúcsokat - kivéve a leveleket - úgy, hogy a gyökér legyen az i, a többi pedig rendre j, k,.... Most rendeljük hozzá a csúcsokhoz az együtthatókat, úgy, hogy a gyökér legyen b i, a többi csúcs, ami nem levél, pedig legyen a j,k ahol j a szül jének az indexe, k pedig a csúcs saját indexe. A levelekben lév együtthatók pedig legyenek c k -k, ha a k index csúcsból induló él tartja ket. Φ(t)-t úgy kapjuk, hogy összeszorozzuk a fában lév együtthatókat, majd összeadjuk öket az összes lehetséges módon. γ(t)-hez az kell, hogy megnézzük mennyi a gyökér rendje, majd elhagyjuk azt, és az így kapott gráfban vegyük a legalsó csúcsok rendjét, majd ezeket is elhagyva folytatjuk az algoritmust. Ezeknek a számoknak a szorozata lesz γ(t). c j f y c j c i c i j a i,j 3 i b i 6 Φ(t) = ij b ic i a i,j c j γ(t) = 3 6 = 8 Az egyenletek, amiket ezekb l kapunk a következ képp néznek ki: Φ(t) = γ(t) Legjobban megérteni talán egy példán keresztül lehet. Ez alapján írjuk fel a négylépé- 8
ses RK-módszerben kapott egyenlet rendszert. 4.4. Négylépcs s RungeKutta-módszer A (4.) képletben m helyére 4-et írva a módszer explicit, ezért minden i > j-re a i,j = 0. Az eddigiek alapján a következ egyenletrendszert kapjuk: b + b + b 3 + b 4 = b c + b 3 c 3 + b 4 c 4 = b c + b 3 c 3 + b 4 c 4 = 3 b 3 a 3, c + b 4 a 4, c + b 4 a 4,3 c 3 = 6 b c 3 + b 3 c 3 3 + b 4 c 3 4 = 4 b 3 c 3 a 3, c + b 4 c 4 a 4, c + b 4 c 4 a 4,3 c 3 = 8 b 3 a 3, c + b 4 a 4, c + b 4 a 4,3 c 3 = b 4 a 4,3 a 3, c = 4. A második, harmadik és ötödik egyenletb l kifejezhet b, b 3, b 4, a negyedik, hatodik, hetedik egyenletb l pedig a 3,, a 4,, a 4,3. Az utolsó egyenletbe való behelyettesítés után kapjuk, hogy c 4 =. A sok megoldásból mutatunk két példát: 0 0 0 0 0 4 4 0 6 3 3 6 0 6 3 6 Ezek közül az els t nevezik a klasszikus (negyedrend ) RungeKutta-módszernek, mert maga Kutta határozta meg ket és valóban negyedrendben konzisztens a módszer. 4.5. Folytonos RungeKutta képletek Ha ki szeretnénk rajzoltatni a megoldást, vagy a megoldás széls értékeit keressük, akkor nem érdemes a h lépéstávolságot nagyon kicsire választani, hiszen ez túl sok függvénykiértékeléssel jár. Ilyenkor el nyös folytonos RungeKutta képleteket használni. Ilyenkor 9
a ξ j számokat ugyanúgy választjuk, mint eddig, viszont a b j súlyok már nem számok lesznek, hanem a t változó folytonos függvényei, amivel a képlet a következ : m y n+t = y n + h b j (t)f(x n + c j h, ξ j ) 0 t. (4.4) j= Itt y n+t = y n (t) az y(x n + th) közelítésére szolgál. Azt szeretnénk, hogy a t = 0 és t = helyen ne változzon meg a hagyományos RungeKutta képlet, és a képlet hibája se változzon meg menet közben, vagyis minden 0 < t < -re ugyanakkora maradjon. Példaként vizsgáljuk meg a másodrend, két lépcs j, folytonos RungeKutta képletek esetét: y n+t = y n + hb (t)f(x n + c h, y n ) + hb (t)f(x n + c h, y n + ha, f(x n, y n )) 0 t. (4.5) El ször biztosítsuk, hogy t = 0-ra és t = -re a hagyományos képletet kapjuk meg. Az els követelmény azt jelenti, hogy b (0) = b (0) = 0. A második feltételhez ugyanazt csináljuk, mint amikor a kétlépcs s képletet határoztuk meg. Taylor sorfejtések összevetéséb l kapjuk a következ ket: b () + b () =, b ()a, =. Ebb l következik, ahogy a nem folytonos képletben, úgy itt is a lokális hiba másodrend. Az általános explicit RungeKutta-módszer stabilitásáról szóló tételb l következik, hogy y n, y n+,... értékek hibája is másodrend. Ezután (4.4) már folytonos interpolációt ad y n = y(x n ) + O(h ) és y n+ = y(x n+ ) + O(h ) között. Már csak azt kell elérnünk, hogy 0 < t < -re y n+t eltérése y(x n + th)-tól másodrend legyen. A (4.5) képletb l és az y n = y(x n ) + O(h )-b l kiindulva kapjuk, hogy y n+t = y(x n ) + O(h ) + hb (t)f(x n + c h, y(x n ) + O(h )) + + hb (t)f(x n + c h, y(x n ) + O(h ) + ha, f(x n, y(x n ) + O(h ))) = = y(x n ) + h[b (t) + b (t)]f(x n, y(x n )) + O(h ) = = y(x n ) + hty (x n ) + O(h ) = y(x n + th) + O(h ) 0
kell, hogy teljesüljön, vagyis b (t) + b (t) = t, 0 t. A legegyszer bb lehet ség ahhoz, hogy az eddigi eredmények mind teljesüljenek: b (t) 0, b (t) = t, a, =. Harmadrend módszer szerkesztéséhez tekintsük (4.4)-ben m = 3 esetet, és t = 0-ra írjuk el, hogy b (0) = b (0) = b 3 (0) = 0 legyen, majd t = -re követeljük meg a háromlépcs s RungeKutta módszernél kapott egyenletrendszert. Ezzel biztosítjuk a az y n értékek kiszámításának stabilitását, valamint a harmadrend ségüket. Az el z módszer analógiájára 0 < t < -re y n helyére y(x n ) + O(h 3 )-at írva kapjuk, hogy 3 y n+t = y(x n ) + O(h 3 ) + h b j (t)f(x n + c j h, ξ j ). j= Ezt a képlépcs s módszerhez hasonlóan sorbafejtve kapjuk, hogy y n+t = y(x n )+h[b (t)+b (t)+b 3 (t)]f(x n, y(x n ))+[b (t)a, +b 3 (t)(a 3, +a 3, )]f x (x n, y(x n ))+O(h 3 ) kell, hogy megegyezzen a következ vel: y(x n ) + hty (x n ) + h t y (x n ) + O(h 3 ) = y(x n + th) + O(h 3 ). Összességében a következ feltételek adódnak: b (t) + b (t) + b 3 (t) = t b (t)a, + b 3 (t)(a 3, + a 3, ) = t b ()a, + b 3 ()(a 3, + a 3, ) = 3 b 3 ()a 3, a, = 6. Ennek egy megoldása a következ lehet: a, =, a 3, =, a 3, = jön a sima háromlépcs s módszerb l, és b (t) = t( 5 6 t), b (t) = 3 t, b 3 (t) = 6 t.
5. fejezet Beágyazott módszerek Ebben a fejezetben szeretnénk minél jobb lokális hiba becslést kapni az egylépéses módszerekre. Ahogy az Euler-módszernél is láthattuk, a globális hibát viszonylag könnyen tudjuk becsülni. Nem ez a helyzet a lokális hibánál, ugyanis a közelít eredmények hibáját sajnos csak ritkán tudjuk becsülni. Ezért fontos a számítás során, hogy a numerikus eredmények birtokában azonnal hibabecslést készítsünk. De minden esetben célszer, hogy összehasonlítási érték is álljon a rendelkezésünkre. 5.. Richardson-extrapoláció Richardson ötletének lényege, hogy h függvényeként kell kezelni a hibát. Tegyük fel, hogy egy adott kezdeti érték (x 0, y 0 ) és egy adott h lépésköz mellett használunk egy p-edrend RK-módszert. Kiszámolunk két lépést, aminek az eredménye legyen y és y. Ezután ugyanazzal a kezdeti értékb l indulva kiszámoljuk (h) lépésközzel tett nagy lépés eredményét, amit jelöljünk ω-val. y globális hibája ismert: e = y(x 0 + h) y = Ch p+ + O(h p+ ), ahol C tartalmazza az úgynevezett hiba együtthatókat, és y 0 deriváltjait p + -edrendig bezárólag. Az y hibája két részb l tev dik össze. Az els lépésb l származó hibából (I + h δf δy + O(h ))e illetve a második lépés lokális hibájából, ami pont akkora, mint e. Tehát a következ t kapjuk: e = y(x 0 +h) y = (I +O(h))Ch p+ +(C+O(h))h p+ +O(h p+ ) = C(h p +)+O(h p+ ).
A nagy lépés hibája: y(x 0 + h) ω = C(h) p+ + O(h p+ ) Az el z egyenletb l kifejezzük ki az ismeretlen C-t, és így extrapolálunk egy jobb értéket y(x 0 + h)-hoz, amit jelöljünk ŷ-al. A következ tétel az [5] könyvben található. 3. Tétel. Tegyük fel, hogy egy p-edrend RK módszerrel tett két h méret lépés közelít értéke y, és ω az egy nagy, h méret lépéssel tett lépés eredménye, akkor az y hibáját a következ képp határozzuk meg: és egy p + -edrend közelítés y(x 0 + h)-re. y(x 0 + h) y = y ω p + O(hp+ ) ŷ = y + y ω p 5.. RungeKuttaFehlberg-módszerek Az egyik nevezetes módszer a hibabecslésre a beágyazott RK-módszer. A lényege, hogy két különböz rend módszert futtatunk párhuzamosan, így kapjuk a hibabecsléseket. Ha két azonos rend módszert futtatnánk, akkor el fordulhatna, hogy egyszer az egyiknek lesz kisebb hibája, másszor pedig a másiknak. A két különböz rend módszernél az egyik hibája elhanyagolható lesz. Fehlberg ötlete a következ volt: a p-edrend módszernek legyenek ugyanazok a c j, a i,j együtthatói, mint a p + -edrend módszernek. Ekkor viszont a b j -k különböz k lesznek, ezért ezekre vezessük be ˆb j jelölést. Mostantól ezt úgy hívjuk, hogy p + (p) módszer. Butcher-táblában pedig a következ képp jelöljük: c T A b ˆb Ez a módszer sokkal el nyösebb Richardson ötletéhez képest, ugyanis nincs szükség újabb függvénykiértékelésekre az azonos együtthet k miatt. Nézzük meg, hogyan is néz 3
ki a 3() módszer. Vegyünk egy harmadrend módszert, például az el z fejezetben tárgyaltat. Ebbe ágyazzunk be egy másodrend módszert. Szükségünk lesz ˆb j -kre. A következ összefüggést kapjuk a másodrend módszer együtthatóira: ˆb + ˆb + ˆb 3 = Következésképp a módszer: ˆb + ˆb 3 =. y n+ = y n + h(ˆb f(ξ ) + ˆb f(ξ ) + ˆb 3 f(ξ 3 )). Rögzítsük le ˆb -t -nek, így ˆb = ˆb = 4 lesz, a módszer Butcher-táblázata pedig: 0 b 6 ˆb 4 A két módszer segítségével becsüljük a hibát: 3 6 4 g n+ = ŷ (n+) y(x n+ ) = h((ˆb b )f(ξ ) + (ˆb b )f(ξ ) + (ˆb 3 b 3 )f(ξ 3 )) = = h(d f(ξ ) + d f(ξ ) + d 3 f(ξ 3 )). Ebben az esetben d =, d = 6, d 3 =. Nézzük most meg az el z fejezetben tárgyalt klasszikus negyededrend módszert, hogy van-e hozzá beágyazott harmadrend módszer. A harmadrend feltételeknek kell teljesülniük ˆb j -kre, a negyedrend a i,j -kkel, és c j -kkel. ˆb + ˆb + ˆb 3 + ˆb 4 = ˆb c + ˆb 3 c 3 + ˆb 4 c 4 = ˆb + ˆb 3 + ˆb 4 = ˆb c + ˆb 3 c 3 + ˆb 4 c 4 = 3 4ˆb + 4ˆb 3 + ˆb 4 = 3 ˆb3 a 3, c + ˆb 4 a 4, c + ˆb 4 a 4,3 c 3 = 6 4ˆb 3 + ˆb 4 = 6 Ha felírjuk ennek az egyenletrendszernek a mátrixát, és megnézzük a determinánsát, akkor azt kapjuk, hogy nem egyenl 0-val. Így viszont egyértelm a megoldása. Vagyis nincs 3-adrend beágyazott módszer ebben az esetben. Ellenben van egy módszer, ami 4
ilyenkor is megoldást jelenthet. Vegyük hozzá az a i,j mátrixhoz ötödik sornak a b vektort, vagyis a 5,i = b i ahol i =,..., 4. c 5 pedig értelem szer en legyen 4 i= a 5,i. Így a ˆb i -kre i =,..., 4 ismeretlenekre felírva a harmadrend feltételeket, kapunk 4 lineáris egyenletet 5 ismeretlennel. Célszer feltenni, hogy ˆb 5 0, ezért legyen ˆb 5 =. Megoldva a rendszert kapjuk: ˆb = 6, ˆb =, ˆb3 = 5 3, ˆb4 = 5 6, ˆb5 =. A módszer neve FSAL(First Same As Last) A különböz matematikai programokban (például Matlab, Mathematica) gyakran használják azt a beágyazott 5(4) módszert, ami Runge, Kutta és Felhlberg nevéhez f z dik. A módszer együtthatóit Butcher-táblázatban adjuk meg, a fels sarok nulláit elhagyva. 0 4 3 8 3 4 3 3 9 3 93 6 700 97 796 97 439 6 8 3680 53 845 404 8 3544 7 565 (5) 5 408 b 0 6 565 ˆb(4) 6 35 0 6656 85 859 404 40 97 0 404 5 856 9 56430 50 Itt ˆb (4) -vel illetve b (5) -vel jelöltük a két együttható halmazt, amely mutatja a hozzátatozó képlet rendjét. 55 5.3. Lépésválasztás Azzal, hogy most már láttunk módszereket a lokális hiba becslésre, ezeket ki is használhatnánk, hogy ne x h lépéssel tegyünk meg egy lépést, hanem a lokális hiba nagyságától függ en. Jelölje h j az x j és x j közötti távolságot minden j =,,..., N-re. Olyan ĥ kellene választani, hogy a globális hiba kisebb maradjon egy adott tolerancia határnál (τ). Vagyis egy p-edrend módszernél g n = Ψ(y n )h p, tehát τ = Ψ(y n )ĥp 5
Osszuk el egymással az egyenleteket! τ g n = Ψ(yn)ĥp Ψ(y n )h = ĥp p h p Ez a becsült optimális lépésköz. ĥ = h p τ g n 5.4. Módszerek a gyakorlatban Lássuk, hogy az eddig említett módszerek hogyan viselkednek a gyakorlatban. Példának tekintsük a következ kezdetiérték feladatot: y = y x y x y() = Ennek analitikusan ki tudjuk számolni a pontos megoldását: y(x) =. Matlab program +x segítségével megoldottuk 3-lépcs s RungeKutta-módszerrel, és beágyazott 3() módszerrel is. Az eredményeket ábrázoltuk a [0, 50] intervallumon. (a) RK-3 módszer (b) Beágyazott 3() módszer Az ábrákon piros vonal jelzi a pontos megoldást, és a kék pontok a közelít megoldás pontjait mutatják. Az sima RK-3 módszernél jól látszik, hogy azonosan lépéstávolsággal helyezkednek el a pontok, míg a beágyazott módszernél ez változik a beépített hibabecslést l függ en. Egy módszert akkor mondunk el nyösebbnek a másiknál, ha kevesebb függvénykiértékelésre van szükség (hiszen egy bonyolult függvénynél ez sokáig tarthat), és a megoldástól sem tér el nagyon. Az els ábrán 50 kiértékelésre volt szükség és a 0 6
közelében, a függvény nagy változásához képest ritkán helyezkednek el a pontok. Ellenben a beágyazott módszernél 5 kiértékelés is elég volt, ráadásul láthatóan jobban közelíti a valódi megoldást. A következ feladat azt hivatott szemléltetni, hogy még az explicit beágyazott módszerek sem tudnak minden kezdetiérték feladatot ügyesen közelíteni. A feladat: y = λ(y cos(x))y() = Beágyazott 5(4) módszerrel megoldott feladatot [0, 0] intervallumon ábrázoltuk λ = paraméter mellett, lásd az 5.-es ábrán. 5.. ábra. Piros vonal ismét a pontos megoldást jelenti, a kék pontok meg a közelít megoldást ábrázolják. A megoldó statisztikája: 3 sikeres lépés, 4 hibás kísérlet, és 63 függvénykiértékelés. Újra megoldottuk a feladatot ugyanezzel a módszerrel λ = 0 paraméter mellett. A változás szemmel látható az 5.-es ábrán. Statisztikája: 03 sikeres lépés, hibás kísérlet, 65 függvénykiértékelés. Mivel egy módszer hatékonysága egyenesen arányos a függvénykiértékelések számával, így ez a módszer már nem t nik annyira jónak. Tehát azt a következtetést tudjuk levonni, hogy a λ paraméter növelésével a feladat úgynevezett merev egyenletté válik. A merevségnek nincs általános deníciója, hatékonysági kérdésen alapszik, hiszen az explicit módszerek is megoldják, csak rendkívül lassan. Az explicit módszereknél a lépéshossz indokolatlanul kicsi lesz, mert a lépéstávolság meghatározásához a stabilitási követelmények jobban hozzájárulnak, mint a pontossági követelmények. Ezért kedvez bbek az olyan módszerek, 7
5.. ábra. amelyek abszolút stabilak. Ha tovább növeljük λ értékét mondjuk 40-re, akkor az 5.3 ábra adódik. 5.3. ábra. Ehhez már 77 sikeres lépés, 4 hibás kísérlet, és 687 függvénykiértékelés kellett. Ugyanezt a feladatot egy merev egyenletekre kifejlesztett programmal oldjuk meg (Matlabban ez az ode5s). A végeredmény az 5.4-es ábrán látható. Statisztikái: 05 sikeres lépés, 4 hibás kísérlet, 4 függvénykiértékelés. Ez a módszer szemmel láthatóan hatékonyabb. Viszont, ahogy az ábrán is látszik, nem mindegy a kezdeti érték sem, ahonnan a feladat kiindul. Ha közelebbi adatot adtunk volna, akkor még hatékonyabb lett volna a módszer. 8
5.4. ábra. 9
6. fejezet Összefoglalás Összefoglalásként elmondhatjuk, hogy az el bbiekben ismertetett egylépéses módszerek egyben jópár problémára megoldást jelentenek, viszont merev rendszerek megoldására nem alkalmasak. Megismerkedtünk az explicit és implicit Euler-módszerrel, ennek javításaival, a trapéz- és érint formulával, valamint az ezeket összefoglaló θ-módszerrel. Ismertettük a RungeKutta-módszercsaládot, betekintést nyertünk az együtthatók általános kiszámításába, amihez gráfelméleti eszközöket is alkalmaztunk. Láthattunk folytonos RungeKutta képletet, valamint megtudhattuk, hogy használhatók a beágyazott módszerek a lokális hiba becslésében. Végül példákon keresztül illusztráltuk a különböz módszerek ugyanazon feladat megoldásával összefügg el nyeit és hátrányait. 30
Irodalomjegyzék [] J. C. Butcher. Numerical Methods for Ordinary Dierential Equations. Wiley, 003. [] A. Iserles. A First Course in the Numerical Analysis of Dierencial Equations. Cambridge University Press, 996. [3] E. Hairer és G. Wanner. Solving Ordinary Dierencial Equations. Springer, 980. [4] J. Stoer és R. Bulirsch. Introduction to Numerical Analysis. Springer-Verlag, 993. [5] E. Hairer és S. P. Nørsett and G. Wanner. Solving Ordinary Dierential Equations. Springer, 993. [6] Stoyan G. és Takó G. Numerikus módszerek. Elte-Typotex, Budapest, 995. [7] P. G. Thomsen. Numerical ODEs -analysis and applications, manuscript, 007. 3