Nyitrai Károly. Kezdeti érték feladatok numerikus vizsgálata. Eötvös Loránd Tudományegyetem. Természettudományi Kar. Témavezet : Csörg Gábor

Hasonló dokumentumok
Molnár Viktória. Közönséges differenciálegyenletek numerikus megoldása

Differenciálegyenletek numerikus megoldása

Taylor-polinomok. 1. Alapfeladatok április Feladat: Írjuk fel az f(x) = e 2x függvény másodfokú Maclaurinpolinomját!

Merev differenciálegyenletek numerikus megoldása

Eötvös Loránd Tudományegyetem Természettudományi Kar

Szakdolgozat. M esz aros Mirjana

Utolsó el adás. Wettl Ferenc BME Algebra Tanszék, Wettl Ferenc (BME) Utolsó el adás / 20

Végeselem modellezés alapjai 1. óra

Konjugált gradiens módszer

Lineáris egyenletrendszerek

Megoldott feladatok november 30. n+3 szigorúan monoton csökken, 5. n+3. lim a n = lim. n+3 = 2n+3 n+4 2n+1

(1 + (y ) 2 = f(x). Határozzuk meg a rúd alakját, ha a nyomaték eloszlás. (y ) 2 + 2yy = 0,

Egylépéses módszerek 0- és A-stabilitása

Lineáris algebra numerikus módszerei

Baran Ágnes, Burai Pál, Noszály Csaba. Gyakorlat Differenciálegyenletek numerikus megoldása

Nagy Levente. Runge Kutta módszerek implementálása és alkalmazása

Numerikus integrálás április 20.

Parciális dierenciálegyenletek

Differenciálegyenletek numerikus megoldása

Numerikus integrálás április 18.

Gyakorló feladatok. Agbeko Kwami Nutefe és Nagy Noémi

Modellek és Algoritmusok - 2.ZH Elmélet

Numerikus módszerek 1.

Gauss-Seidel iteráció

Hajlított tartó elmozdulásmez jének meghatározása Ritz-módszerrel

Feladatok megoldásokkal a 9. gyakorlathoz (Newton-Leibniz formula, közelítő integrálás, az integrálszámítás alkalmazásai 1.

Lineáris leképezések. Wettl Ferenc március 9. Wettl Ferenc Lineáris leképezések március 9. 1 / 31

Közönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások

1. Parciális függvény, parciális derivált (ismétlés)

Lagrange-féle multiplikátor módszer és alkalmazása

Norma Determináns, inverz Kondíciószám Direkt és inverz hibák Lin. egyenletrendszerek A Gauss-módszer. Lineáris algebra numerikus módszerei

Differenciálegyenletek

Véletlen bolyongás. Márkus László március 17. Márkus László Véletlen bolyongás március / 31

Mátrixhatvány-vektor szorzatok hatékony számítása

1.9. B - SPLINEOK B - SPLINEOK EGZISZTENCIÁJA. numerikus analízis ii. 34. [ a, b] - n legfeljebb n darab gyöke lehet. = r (m 1) n = r m + n 1

2. SZÉLSŽÉRTÉKSZÁMÍTÁS. 2.1 A széls érték fogalma, létezése

Numerikus integrálás

Differenciálegyenletek numerikus integrálása április 9.

Gauss-Jordan módszer Legkisebb négyzetek módszere, egyenes LNM, polinom LNM, függvény. Lineáris algebra numerikus módszerei

Dierenciálhatóság. Wettl Ferenc el adása alapján és

1. Számsorok, hatványsorok, Taylor-sor, Fourier-sor

Szélsőérték feladatok megoldása

1. Példa. A gamma függvény és a Fubini-tétel.

A Richardson-extrapoláció és alkalmazása a Dániai Euleri Modellben

10. Előadás. 1. Feltétel nélküli optimalizálás: Az eljárás alapjai

Függvények július 13. f(x) = 1 x+x 2 f() = 1 ()+() 2 f(f(x)) = 1 (1 x+x 2 )+(1 x+x 2 ) 2 Rendezés után kapjuk, hogy:

Közönséges differenciálegyenletek kétpontos peremérték-feladatai a numerikus modellezésben

NUMERIKUS MÓDSZEREK FARAGÓ ISTVÁN HORVÁTH RÓBERT. Ismertet Tartalomjegyzék Pályázati támogatás Gondozó

Lineáris algebra 2. Filip Ferdinánd december 7. siva.banki.hu/jegyzetek

Runge-Kutta módszerek

Segédanyag az A3 tárgy gyakorlatához

Exponenciális RungeKutta módszerek

rank(a) == rank([a b])

Explicit hibabecslés Maxwell-egyenletek numerikus megoldásához

BIOMATEMATIKA ELŐADÁS

Gibbs-jelenség viselkedésének vizsgálata egyszer négyszögjel esetén

x 2 e x dx c) (3x 2 2x)e 2x dx x sin x dx f) x cosxdx (1 x 2 )(sin 2x 2 cos 3x) dx e 2x cos x dx k) e x sin x cosxdx x ln x dx n) (2x + 1) ln 2 x dx

Sorozatok és Sorozatok és / 18

Egyenletek, egyenlőtlenségek VII.

(!), {z C z z 0 < R} K (K: konv. tart.) lim cn+1

valós számot tartalmaz, mert az ilyen részhalmazon nem azonosság.

Numerikus módszerek 1.

Numerikus módszerek 1.

Tartalomjegyzék. Typotex Kiadó, 2010

MBNK12: Permutációk (el adásvázlat, április 11.) Maróti Miklós

Függvények vizsgálata

Kalkulus I. gyakorlat Fizika BSc I/1.

LNM folytonos Az interpoláció Lagrange interpoláció. Lineáris algebra numerikus módszerei

7. gyakorlat. Lineáris algebrai egyenletrendszerek megoldhatósága

3. el adás: Determinánsok

Függvények határértéke, folytonossága

3. Lineáris differenciálegyenletek

Vektorterek. Wettl Ferenc február 17. Wettl Ferenc Vektorterek február / 27

Opkut deníciók és tételek

Eötvös Loránd Tudományegyetem Természettudományi Kar

25 i, = i, z 1. (x y) + 2i xy 6.1

Determinisztikus folyamatok. Kun Ferenc

Meghatározás: Olyan egyenlet, amely a független változók mellett tartalmaz egy vagy több függvényt és azok deriváltjait.

a stabilitás szerepe a differenciálegyenletek numerikus megoldásában

Lineáris leképezések. 2. Lineáris-e az f : R 2 R 2 f(x, y) = (x + y, x 2 )

Analitikus térgeometria

Komplex számok trigonometrikus alakja

Kalkulus I. gyakorlat, megoldásvázlatok

Alap-ötlet: Karl Friedrich Gauss ( ) valószínűségszámítási háttér: Andrej Markov ( )

Differenciálegyenletek. Vajda István március 4.

Függvények folytonosságával kapcsolatos tételek és ellenpéldák

Kétváltozós függvények differenciálszámítása

1. A k-szerver probléma

4. Laplace transzformáció és alkalmazása

ANALÍZIS II. Példatár

ZH feladatok megoldásai

Differenciálegyenlet rendszerek

Haladók III. kategória 2. (dönt ) forduló

A brachistochron probléma megoldása

Lineáris algebra és a rang fogalma (el adásvázlat, szeptember 29.) Maróti Miklós

Permutációk véges halmazon (el adásvázlat, február 12.)

Hatványsorok, Fourier sorok

1. feladatsor: Vektorterek, lineáris kombináció, mátrixok, determináns (megoldás)

Numerikus módszerek beugró kérdések

Határozatlan integrál (2) First Prev Next Last Go Back Full Screen Close Quit

Átírás:

Eötvös Loránd Tudományegyetem Természettudományi Kar Nyitrai Károly Kezdeti érték feladatok numerikus vizsgálata BSc Szakdolgozat Témavezet : Csörg Gábor Alkalmazott Analízis és Számításmatematikai Tanszék Budapest, 4

Tartalomjegyzék. Bevezetés 3. Az Euler-módszer 5.. Az egylépéses módszerek konvergenciája............................ 5.. Az explicit Euler-módszer.................................... 6 3. Az Euler-módszer javítása 8 3.. Javítás trapéz formulával.................................... 8 3.. Javítás érint formulával..................................... 9 4. A Runge-Kutta módszerek 4.. A Runge-Kutta módszer néhány tulajdonsága......................... 3 4.. Másodrend Runge-Kutta módszer............................... 5 4.3. Harmad- és magasabb rend Runge-Kutta módszerek.................... 7 4.4. Hatékonyság............................................ 5. Beágyazott módszerek 5.. A Richardson extrapoláció.................................... 5.. Automatikus lépésválasztás................................... 5.3. A beágyazott módszerek..................................... 3 6. A megismert módszerek bemutatása egy gyakorlati példán keresztül 5 6.. Euler-módszer........................................... 5 6.. A javított Euler-módszer..................................... 8 6.3. Runge-Kutta és beágyazott módszerek............................. 3 6.4. Összefoglalás........................................... 33

. fejezet Bevezetés A való életben gyakorta fordulnak el olyan problémák, feladatok, melyek modellezése során dierenciálegyenleteket kell megoldani. Vegyünk el ször egy zikai példát egy ejt erny snek a mozgását. Tegyük fel, hogy nincs szél, ezáltal csak függ legesen mozog. Newton második törvényét felhasználva kapjuk a következ dierenciálegyenletet: my (t) = mg mcy (t), ahol m az ejt erny s súlya, g pedig a gravitációs együttható. Ezt át tudjuk alakítani els rend vé, mégpedig úgy, hogy legyen v = y, így a dierenciálegyenletünk, m-el való leosztás után: v = y, v = g cv Következ példának vegyünk a könyv által felvázolt modellt, amely valamilyen információ szétterjedését modellezi. Az információ terjedéséhez természetesen kell az, hogy egy ember, aki birtokában van ennek a hírnek, továbbadja annak, aki nem ismeri az információt. A s r sége az információval rendelkez egyéneknek a lakosságban legyen x, és értelemszer en x azoknak, kik nem ismerik az információt. A hírtovábbítás megtörténésének valószín sége x( x). Az is fontos, hogy az információátadással mennyivel növekedett a hírt ismer és továbbadó emberek száma a lakossághoz képest. Ez az eredményességet jelöl pozitív konstans legyen mondjuk α. Arra számítunk, hogy minél több t id t adunk a hír átadására, annál több lesz a s r ség növekménye. Els közelítésben t-vel lineárisan fog növekedni ez a s r ség. Így tehát, ha t-ben x(t) volt a s r ség, akkor az átadás után a t + t pillanatban x(t + t) = x(t) + αx(t)( x(t)), vagy átrendezve x(t + t) x(t) = αx(t)( x(t)) t lesz az új s r ség. Ha t-t egyre kisebbnek gondoljuk, valamint x-t dierenciálhatónak tekintjük, akkor t határátmenettel következik az alábbi dierenciálegyenlet: x (t) = αx( x). (.) 3

Ez a feladat analitikusan megoldható, az analitikus megoldás képlete: x(t) = x(), > x() = >, vagyis β = >. (.) + βe αt + β x() Nézzünk még egy példát, ezúttal a biológiából, mégpedig az úgynevezett ragadozó-préda modellt. Legyen x(t) a préda populáció mérete t id pontban, y(t) pedig a ragadozó populáció mérete, valamint ismerjük x()-t és y()-t, vagyis a populációk kezdeti méretét. Ekkor az alábbi dierenciálegyenlet-rendszert írhatjuk fel: x (t) = ax(t) bx(t)y(t) y (t) = cx(t)y(t) dy(t), ahol is a a préda populáció növekedési rátája, d a ragadozó populáció pusztulási aránya, b és c pedig azt fejezi ki, hogy a ragadozó és préda találkozásánál a prédák száma csökken, illetve a ragadozók száma n. De miért is van szükség a dierenciálegyenleteknek a numerikus megoldására? És mi is pontosan az, hogy analitikus megoldás és hogy numerikus megoldás? Nos, az analitikus módszerek alkalmasak arra, hogy a dierenciálegyenlet pontos megoldását kiszámoljuk, míg a numerikus módszerekkel közelít megoldásokat kapunk. A numerikus megoldásokokat az inspirálja, hogy a valós problémákat, modelleket leíró dierenciálegyenletek ( dierenciálegyenlet-rendszerek) többsége analitikusan nem megoldható, a megoldásnak nincs zárt alakja. Mivel a numerikus módszerek megoldásai ahogy már említettük, közelít ek, azt nyilvánvalóan megköveteljük, hogy egy bizonyos elfogadható hibahatáron belül maradjanak. Tekintsük az alábbi közönséges dierenciálegyenlet-rendszert: y (x) = f(x, y(x)) (.3) A továbbiakban ezt a közönséges dierenciálegyenlet-rendszert szeretnénk megoldani, ahol f : R n+ R n, x R és y R n. Tegyük fel továbbá legyen f folytonos az els argumentumában (x) és Lipschitzfolytonos a második argumentumában (y). A kezdeti feltétel, y() = y hozzávételével (.3)-nak pontosan egy megoldása van. Ezt a könyvben is megemlített Picard-Lindelöf tétel adja nekünk. Viszont még amikor csak egy dierenciálegyenletet kell megoldanunk ( n = ) és a jobboldala nem függ a megoldástól y = f(x), akkor is szükség lehet numerikus módszerre. Ekkor a dierenciálegyenlet ekvivalens az y(x) = y + f(s)ds integrálegyenlettel, és bár integrálásra vezettük vissza a kezdetiérték-feladatot, kiszámítása gyakran nehézkes. 4

. fejezet Az Euler-módszer.. Az egylépéses módszerek konvergenciája Tekintsük a következ kezdetiérték feladatot: y (x) = f(x, y(x)), t [, T ], y(x ) = y. (.) Célunk ehhez a feladathoz numerikus megoldást el állítani, vagyis az értelmezési tartomány egyes pontjaiban az ismeretlen megoldásfüggvény értékeit véges számú lépésssel közelít leg meghatározzuk, mégpedig egylépéses módszerrel. Vagyis valamilyen rögzített id pontbeli közelítést egy azt megel z id pontbeli közelítés segítségével határozzuk meg. Legyen ω h := {x i = ih, i =,,..., N; h = T/N} ekvidisztáns rácsháló és tekintsük az y i+ = y i + hφ(h, x i, y i, y i+ ) (.) egylépéses módszert, ahol Φ a módszert meghatározó adott függvény. Legyen g i (h) = y(x i ) + hφ(h, x i, y(x i ), y(x i+ )) y(x i+ ) függvény.... Deníció. Ezt a g i (h) függvényt a (.) módszer x i ω h pontbeli képlethibájának nevezzük. Azt mondjuk, hogy Φ módszer p-ed rendben konzisztens az x i ω h rácspontban, ha g i (h) = O(h p+ ) valamely p > -ra.... Deníció. Az e i (h) = y(x i ) y i értéket, ahol x i = ih a (.) numerikus módszer globális hibájának nevezzük. 5

..3. Deníció. Azt mondjuk, hogy a (.) módszer konvergens az x i pontban, ha lim e i(h) =. (.3) h A (.3) konvergenciájának rendjét a módszer konvergenciarendjének hívjuk...4. Tétel. Tegyük fel, hogy a (.) képlettel deniált Φ numerikus módszer p-ed rendben konzisztens és a Φ függvény lipschitzes a harmadik, illetve a negyedik változójában. Ekkor a Φ módszer p-ed rendben konvergens a [, T ] intervallumon... Az explicit Euler-módszer A legegyszer bb numerikus módszer az Euler nevéhez f z d és az nevét visel Euler-módszer. El ször tekintsük a (.) kezdetiérték feladatot n = -re és legyen x. Az alapötlet az, hogy az adott (, y ) pontból kiindulva, a (.) által deniált iránymez t közelít leg követhetjük. Itt a deriváltat ismerjük, y () = f(, y ) és a derivált irányába teszünk egy h > lépéstávolságú lépést: y := y + hf(, y ) Ekkor kapunk egy (x, y ) pontot, ebb l újabb lépést teszünk f(x, y ) irányba, és így tovább. Ezt az eljárást ismételve kapjuk az explicit Euler-módszert: ahol x =, x i+ = x i + h, (i =,,..., N ). y := y(), y i+ = y i + hf(x i, y i ), (.4)... Deníció. Legyen x [, ] rögzített pont, és osszuk fel a [, ] intervallumot n részre úgy, hogy x az osztópontok között legyen. A (.4) módszert a (.3) feladat megoldására konvergensnek hívjuk, ha egy adott függvényosztályból minden f-re, minden y = y() kezdetiértékre és minden rögzített x pontjára igaz, hogy ha n, akkor y n y(x ). Most vegyük a módszer lokális hibáját a konvergenciavizsgálat okán. A.. deníció alapján a (.4) módszer képlethibája, avagy lokális hibája a következ : ahol y(x) a (.) pontos megoldását jelenti. g i := y(x i+ y(xi) h f(x i, y(x i )), (.5) De a lokális hibát a pontos megoldás ismerete nélkül is tudjuk becsülni, mégpedig úgy, hogy ha feltesszük, hogy f(x, y) mindkett argumentuma szerint folytonosan deriválható, vagyis: f C {[, ] R}. Ez így biztosítja a számunkra a megoldás létezését, csakúgy, mint a kétszeresen folytonosan dierenciálhatóságot is. Így y is folytonos, ezzel a g i képlethibából, annak is a h = körüli Taylor sorfejtésb l azt kapjuk, hogy hg i = [y(x i ) + hy (x i ) + h y (x i + ϑh)] y(x i ) hy (x i ), ahol a < ϑ <. Így tehát azt kaptuk, hogy g i h M, M := max [,] y (x). 6

A fenti hibabecslésb l így adódik, hogy az Euler módszer els rendben konzisztens f C {[, ] R} esetén. A módszerünk globális hibája a.. deníció miatt e i = y(x i ) y i, vagyis a pontos és a számított érték különbsége. Most becsüljük a globális hibát. El ször is beszorozzuk (.5) egyenletet h-val megszorozzuk, majd ezt átrendezve kapjuk: y(x i+ ) = y(x i ) + hf(x i, y(x i )) + g i h Ebb l vonjuk ki az (.4) egyenletet, így e i+ = e i + h[f(x i, y(x i )) f(x i, y i )] + g i h. Ekkor használjuk ki, hogy f a második változójában Lipschitz-folytonos, így adódik a következ becslés: e i+ e i + L f h e i + g i h, ahol L f az f Lipschitz-állandója. Innen tovább becsülve: e i+ ( + L f h) e i + g i h + ( + L f h) g i h i... ( + L f h) i+ e + ( + L f h) i k g k h k= i ( + L f h) i+ [ e + g k h]. Itt az ( + L f h)-t tudjuk felülr l becsülni (e h L f )-el, mégpedig: ( + L f h) i e L f hi = e L f x i. Mivel az intervallumunk hossza, így e L f -et kapunk, ami konstans, jelöljük mondjuk C-vel. Így a végs becslés: i e i+ C[ e + g k h]. (.6)... Tétel. (Az Euler-módszer tulajdonságai) a) Ha f lipschitzes, akkor teljesül (.6). b) Ha y C, akkor az Euler-módszer konzisztens és a g i lokális hibájára igaz, hogy g i h M. c) Ha e = és y C, akkor az Euler-módszer a [, ] intervallumon konvergens, valamint a konvergencia rendje megegyezik a konzisztencia rendjével: e i = y(x i ) y i e L h f M = Mh k= k= 7

3. fejezet Az Euler-módszer javítása Felmerülhet bennünk, hogy van-e lehet ség arra, hogy az Euler-módszert úgy javítsuk, hogy a konzisztencia rend n jön. Az ötlet az, hogy y (x) = f(x, y(x))-et integráljuk x j és x j+ között, így kapjuk y(x j+ ) y(x j ) = xj+ x j f(x, y(x))dx. (3.) Mivel ahogy már korábban említve lett, ezt nem tudjuk mindig megoldani, így az integrált kvadratúra formulákkal közelítjük. 3.. Javítás trapéz formulával El ször is vegyük azt, hogy mi is a trapézformula: ahol is h = x j+ x j. xj+ Ennek a formulának a hibája O(h 3 ). Így azt kapjuk xj+ x j x j F (x)dx F (x j) + F (x j+) h, f(x, y(x))dx = f(x j, y(x j )) + f(x j+, y(x j+)) h + O(h 3 ) Ez még nem megfelel számunkra, hisz így y(x j+ ) miatt a formulánk nem lenne explicit, de ezt meg tudjuk oldani. Mégpedig úgy, hogy az y(x j+ )-et x j körül Taylor sorba fejtjük, így y(x j+ ) = y(x j ) + hy (x j ) + O(h ). Itt vegyük észre, hogy y (x j ) = f(x j, y(x j )), vagyis azt kapjuk, hogy y(x j+ ) = y(x j ) + hf(x j, y(x j )) + O(h ). 8

Ebb l következ en: Vagyis az integrál közelítése: xj+ f(x j+, y(x j+ )) = f(x j+, y(x j ) + hf(x j, y(x j )) + O(h )) = f(x j+, y(x j ) + hf(x j, y(x j ))) + O(h ) f(x, y(x))dx = h f(x j, y(x j )) + f(x j+, y(x j ) + hf(x j, y(x j ))) x j Ez adja az ötletet az így javított Euler-módszerhez: y j+ y j = h [f(x j, y j ) + f(x j+, y j + hf(x j, y j ))]. + O(h ). Jelölje Így végül y j+ := y j + hf(x j, y j ) y i+ = y i + h [f(x j, y j ) + f(x j+, y j+)]. (3.) Most kiváncsiak vagyunk a konzisztenciarendre, hogy ezzel valóban javítottunk-e az Euler-módszeren. Ehhez meg kell vizsgálnunk a képlethibát, avagy a lokális hibát: g j = y(x j+) y(x j ) h [f(x j, y(x j )) + f(x j+, y(x j ) + hf(x j, y(x j )))] Itt vegyük észre, hogy egyrészt f(x j, y(x j )) = y (x j ), másrészt y(x j )+hy (x j ) olyan, mint y(x j+ ) Taylor sora, csupán egy O(h ) tag hiányzik. Tehát így Viszont g j = y(x j+) y(x j ) h = y(x j+) y(x j ) h [f(x j, y(x j )) + f(x j+, y(x j+ ) + O(h ))] = h h [f(x j, y(x j )) + f(x j+, y(x j+ )) + O(h )]. h xj+ [f(x j, y(x j )) + f(x j+, y(x j+ ))] + O(h 3 ) = f(x, y(x))dx + O(h 3 ) x j Itt ugye f(x, y(x)) = y (x), és így ebb l g j = y(x j+) y(x j ) h h (y(x j+) y(x j ) + O(h 3 )) = O(h ). Vagyis az jött ki, hogy a trapézformulával javított Euler-módszer konzisztenciarendje, azaz másodrendben konzisztens. 3.. Javítás érint formulával Egy másik lehet ség, másik módszer a javításhoz, a trapéz formula mellett az érint formula, ami a következ képpen néz ki: xj+ x j F (x)dx = hf (x j+ ) + O(h3 ) 9

Ezzel azt kapjuk, hogy: xj+ x j f(x, y(x))dx = hf(x j+, y(x j+ )) + O(h3 ). (3.3) Itt a problémás tag az y(x j+ ), de tegyük azt, mint el bb, vagyis x j körül fejtsük sorba t is, vagyis: Ezt behelyettesítve (3.3)-be: xj+ y(x j+ ) = y(x j) + h y (x j ) + O(h ). x j f(x, y(x))dx = hf(x j+, y(x j) + h y (x j )) + O(h 3 ). Itt szintén, mint a trapéz formás javításnál, észrevesszük, hogy y (x j ) = f(x j, y(x j )) és így az ötlet: Legyen így az érint formulával javított módszer: y j+ y j = hf(x j+, y j + h f(x j, y j )). y j + h f(x j, y j ) = y j+, y j+ = y j + h f(x j, y j ) Ezt a módszert hívják az úgynevezett javított Euler-módszernek. y j+ y j = hf(x j+, y j+ ) (3.4) Itt is meg kell vizsgálnunk, hogy valóban javítottunk-e így a konzisztenciarenden, és ha igen, akkor mennyire javítottuk. Ismét vizsgáljuk meg a képlethibát, avagy lokális hibát: Itt ezt visszahelyettesítve: De viszon megint: Ezzel azt kaptuk, hogy g j = y(x j+) y(x j ) h f(x j+, y(x j) + h f(x j, y ( x j ))). y(x j ) + h f(x j, y ( x j )) = y(x j+ ) + O(h ), g j = y(x j+) y(x j ) h h hf(x j+, y(x j+ )) + O(h ). hf(x j+, y(x j+ )) = xj+ x j f(x, y(x))dx + O(h 3 ). g j = y(x j+) y(x j ) h Itt észrevesszük, hogy f(x, y(x)) = y (x) és így h xj+ h xj+ x j f(x, y(x))dx + O(h ). f(x, y(x))dx = y(x j+) y(x j ) x j h,

vagyis azt kaptuk, hogy és így az marad, hogy g j = y(x j+) y(x j ) h y(x j+) y(x j ) h g j = O(h ), + O(h ), azaz az Euler-módszert érint formulával javítva kapott javított Euler-módszer is másodrendben konzisztens.

4. fejezet A Runge-Kutta módszerek Láthattuk, hogy kvadratúra formulák segítségével tudtunk javítani az Euler-módszeren, felmerül a kérdés, miként lehetne még jobb, magasabb rend módszereket létrehozni az eddigiek segítségével. Ehhez tekintsük ismét a javított Euler-módszert (3.4). A módszerben ugye el ször az eredeti képlettel megteszünk egy fél lépést és az így kapott pontban, ami legyen mondjuk (x j+ h, y j+ h ), kiszámítjuk az f függvény értékét, és ezzel az értékkel teszünk meg egy lépést. Rungét követve, írjuk ezt fel a következ módon: k := f(x j, y j ), k := f(x j + h, y j + h ) y j+ := y j + hk. Azt már láttuk, hogy a javított Euler-módszer másodrendben konzisztens, és a képleteib l látható, hogy magasabb rend módszert is meg tudunk konstruálni anélkül, hogy az f függvény deriváltjaira szükség lenne, és ez az az út, amit általánosítani szeretnénk. Az általánosítássak kapjuk az úgynevezett Runge-Kutta módszercsaládot. Legyenek k = f(x j, y j ) k = f(x j + ha, y j + hb k ) k 3 = f(x j + ha 3, y j + hb 3 k + hb 3 k ). s k s = f(x j + ha s, y + h b sj k j ) y j+ = y j + h i= s c i k i (4.) Ez az úgynevezett általános alakú s-lépcs s explicit Runge-Kutta módszer, hisz az y j+ meghatározásához s-szer értékeljük ki az f-et. A módszert jellemz paraméterek pedig i= a,..., a s

b, b 3, b 3, b 4,..., b s,s c,..., c s, ezekkel adhatjuk meg magát a módszert. A B = (b ij ) i,j=,...,m együtthatók által meghatározott mátrixot szokás Runge-Kutta mátrixnak is nevezni,melyben a hiányzó elemeket deniáljuk -nak. A paramétereket szokás egy áttekinthet, táblázatos formában megadni, amit Butcher-táblázatnak hívunk és explicit esetben így néz ki: a b a 3 b 3 b 3... a m b m b m... b m,m c c... c m (4.) avagy kompaktabbul felírva: a B c ahol a, c R m az a i -ket, illetve c i -ket tartalmazó vektorok, B R m m a b ij -k alkotta Runge-Kutta mátrix. Természetesen általánosíthatjuk a módszert még úgy, hogy B nem alsó háromszög mátrix, ami azzal jár, hogy minden lépésben k i -k kiszámításához egy-egy nemlineáris egyenletrendszert kellene megoldanunk. Ezt a módszert implicit Runge-Kutta módszernek hívjuk, de ezzel a továbbiakban nem foglalkozunk és maradunk az explicit Runge-Kutta módszereknél. 4.. A Runge-Kutta módszer néhány tulajdonsága 4... Deníció. A Runge-Kutta módszer képlethibája g j = y(x i+j) y(x j ) h ahol a k j számok kiszámolása (4.) alapján történik. s c j k j, 4... Tétel. (általános explicit Runge-Kutta stabilitása) Legyen f Lipschitz-folytonos a második változójában, L f Lipschitz-konstanssal. Ekkor az (4.) explicit Runge-Kutta módszer stabil, érvényes az alábbi becslés: ahol i= j e j e LΦ ( e + g k h), L Φ = L f ( k= s c i + Q s (hl f )), i= és Q s (hl f ) a hl f -nek (s-)-edfokú polinomja, amely eleget tesz Q s (hl f ) = O(hL f )-nek. 3

Bizonyítás. Legyen Ekkor és s Φ(x, y, h) := c i k i, k i = k i (x, y, h). i= hg j := y(x j+ ) y(x j ) hφ(x j, y(x j ), h), y j+ = y j + hφ(x j, y j, h), így a e j+ = y(x j ) y j jelöléssel e j+ = e j + h[φ(x j, y(x j ), h) hφ(x j, y j, h)] + g j h. (4.3) Ha Φ Lipschitz folytonos a második argumentumában, akkor a tétel lényegében be van bizonyítva, hiszen vegyük észre, hogy Φ(x, u, h) Φ(x, v, h) s c i k i (x, u, h) k i (x, v, h). i= Ezzel pedig visszavezettük a kerdést a k j (x, y, h) kifejezés y szerinti lipschitzességére. Mivel jelen esetben k j -nek a függ sége h-tól és x j -t l nem érdekes, így a következ kben ezeket elhagyjuk. A k j j k j (u) = f(x + ha j, u + h b jl k l (u)) deníciója megmutatja, hogy f-t l örökli a Lipschitz-folytonosságot: l= j = : k (u) k (v) L f u v, Így j =,..., s : Φ(x, u, h) Φ(x, v, h) L f [ j k j (u) k j (v) L f u v + h b jl (k l (u) k l (v)) l= j ( u v + h b jl k l (u) k l (v) ). j= l= Φ Lipschitz-folytonosságától úgy jutunk el (4.3)-ból a s s j c j + hl f c j b jl + O(hL f )] u v. e j+ e LΦxi ( e + j= l= j g k h) k= egyenl tlenségbe, mint az Euler-módszer globális hibabecslésénél, és ezzel a tétel állításához jutunk. 4..3. Következmény. (Runge-Kutta módszer konvergenciája) Ha y = y(), f C {[, ] R} és s i= c i =, akkor az (4.) Runge-Kutta módszer konvergens. 4

4.. Másodrend Runge-Kutta módszer Most szeretnénk a másodrend Runge-Kutta módszereket általános alakban felírni. Ehhez vegyük el ször az y(x) megoldás Taylor-sorának els néhány tagját az x = x + h pontban és mivel a konzisztenciarend, amit biztosítani szeretnénk, kett, ezért y(x + h) = y(x ) + hy (x ) + h! y (x ) + O(h 3 ). (4.4) Vezessük be a következ jelöléseket: f = f(x, y(x )), i f = i f(x, y(x )), ij f = ij f(x, y(x )), stb. Így (4.4) átírható az alábbi alakra: y(x + h) = y(x ) + hf + h! ( f + f f) + O(h 3 ) = y(x ) + h f + h (f + h f + hf f) + O(h 3 ). (4.5) Mivel ezért (4.5) felírható f(x + h, y(x ) + hf(x, y(x ))) = f + h f + hf f + O(h ), y(x + h) = y(x ) + h f + h f(x + h, y(x + hf(x, y(x )))) + O(h 3 ) (4.6) alakba. A (4.6)-t általánosítjuk a következ paraméteres alakban: y(x + h) = y(x ) + c hf(x, y(x )) + c hf(x + a h, y(x + b hf(x, y(x )))) + O(h 3 ), (4.7) ahol a c, c, a, b egyel re még tetsz leges paraméterek. Az x = x i id pontban felírva (4.7)-et az y i+ = y i + c hf(x i, y i ) + c hf(x i + a h, y i + b hf(x i, y i )) (4.8) egylépéses módszert kapjuk. A (4.8) módszer paramétereit Butcher táblázatba is írhatjuk: a b c c Most fejtsük sorba a (4.7) egyenletünk jobb oldalát, ekkor azt kapjuk, hogy y(x + h) = y(x ) + c hf + c h[f + a h f + b hf f] + O(h 3 ) = y(x ) + (c + c )hf + h [a c f + c b f f] + O(h 3 ). (4.9) Ekkor (4.4)-et alkalmazva, a (4.5) és (4.9) egyenletekb l azt kapjuk, hogy a (4.8) módszer akkor másodrend, ha c + c = a c = (4.) b c =. Tehát összegezve, amit kaptunk: 5

4... Tétel. Tegyük fel, hogy a, c, c, b paraméterek megoldásai a (4.) egyenletrendszernek. Ekkor a k = f(x i, y i ), k = f(x i + a h, y i + hb k ), képletekkel deniált egylépéses explicit numerikus módszer másodrend. y i+ = y i + h(c k + c k ) (4.) 4... Megjegyzés. Ezt a tételbeli feltételeket kielégít (4.) módszert másodrend explicit Runge- Kutta módszernek hívjuk. Nézzük meg az (4.) egyenletrendszert, ami meghatározza a módszert. Van három egyenlet és hozzá négy ismeretlen, így a megoldás nem egyértelm. Viszont könnyen megállapítható, hogy a megoldások a (4.) egyenletrendszerhez el állnak tetsz leges c esetén a következ alakban: c = c, c = c, a = b = c. Tehát így kaptunk egy egyparaméteres módszercsaládot, melyek Butcher-táblázata a következ képp néz ki: c c c c Tekintsük a c = -es választást. Így azt kaptuk, hogy k = f(x i, y i ), k = f(x i + h, y i + hk ) y i+ = y i + h(k + k ), 6

Butcher-táblája pedig a következ : Ebben felismerhetjük a már korábban bemutatott, trapézformulával javított Euler-módszert. Most legyen c=, így a módszerünk k = f(x i, y i ), k = f(x i + h, y i + hk ); Butcher táblája pedig y i+ = y i + hk. Ez is könnyen felimerhet, ez a módszer az érint formulával javított Euler-módszer. Ennek a két módszernek már ismerjük a konzisztenciarendjét, ami kett, de felmerülhet a kérdés, hogy lehet-e a (4.) módszert harmadrend vé tenni, de a válasz sajnos nem. Vagyis (4.) módszer legfeljebb másodrend. 4.3. Harmad- és magasabb rend Runge-Kutta módszerek Mivel a gyakorlati számítások során az els -, illetve másodrend módszerek általában nem túlzottan hasznosak, hisz az elvárt pontosságot gyakorta reális id n belül nem tudjuk velük elérni, így szülségünk van magasabb rend módszerek el állítására. Így hát készítsünk harmadrend módszert. Mivel a kétlépcs s Runge-Kutta módszerek legfeljebb másodrendben pontosak, így célszer háromlépcs s Runge-Kutta módszerb l kiindulni (4.) alapján: k = f(x j, y j ) k = f(x j + a h, y j + hb k ) k 3 = f(x j + a 3 h, y j + hb 3 k + hb 3 k ) y j+ = y j + h(c k + c k + c 3 k 3 ) (4.) Az így kapott módszer paramétereit ismét felírhatjuk Butcher-táblázatban, és ezt kapjuk: a b a 3 b 3 b 3 c c c 3 7

Most szeretnénk meghatározni a paramétereket. Ehhez h szerint fejtsük Taylor-sorba k (x, y, h)-t és k (x, y, h)-t. Ekkor azt kapjuk tehát, hogy k = f, k = f + ha f x + hb f y f + h (f xxa + f xy fa b + f yy f b ) + O(h 3 ) = f + hb F f + (hb ) F f + O(h 3 ), amennyiben a = b. Hasonlóan kapható meg k 3 is: k 3 = f + ha 3 F f + h b 3 b f y F f + (ha 3) F f + O(h 3 ). ha a 3 = b 3 + b 3. Ekkor a Taylor-sorbafejtések alapján y(x j+ ) = y(x j ) + h[(c + c + c 3 )f + h(c b + c 3 a 3 )F f +h ( c b + c 3a 3)F f + h c 3 b 3 b f y F f] + O(h 4 ) = y(x j ) + hy (x j ) + h y (x j ) + h3 6 y (x j ) + O(h 4 ). Vagyis tehát összefoglalva, g j = y(x j+) y(x j ) s c i k i = O(h 3 ), h ha i= c + c + c 3 =, c b + c 3 a 3 = a = b, a 3 = b 3 + b 3 (4.3) c 3 b 3 b = 6, c b + c 3a 3 = 6. Így kaptunk egy 6 egyenletb l álló nemlineáris egyenletrendszert, 8 ismeretlennel, vagyis az általános megoldás szabad paraméterrel rendelkezik. A lehetséges megoldások közül fontosabbat nézzünk meg:. Az els legyen az alábbi Butcher táblázatban lev értékekkel deniált módszer: 3 3 3 3 3 4 4 Maga a módszer: k = f(x j, y j ) k = f(x j + h 3, y j + h 3 k ) k 3 = f(x + 3 h, y + 3 hk ) y j+ = y j + h 4 (k + 3k 3 ) Ez a módszer gyakran szerepel alkalmazásokban. 8

. A másik fontosabb harmadrend módszer táblázata: 6 3 6 És maga a módszer a következ képpen fest: k = f(x j, y j ) k = f(x j + h, y j + h k ) k 3 = f(x j + h, y hk + hk ) y j+ = y j + h 6 (k + 4k + k 3 ) Mivel ez a módszer f(x, y) = f(x) esetén valójában negyedrendben konzisztens, így alkalmazása akkor ajánlott, ha f közel van a -hoz. Negyedrend módszer m=4-el, azaz 4 lépcs vel konstruálható, viszont ehhez már egy 8 egyenletb l álló nemlineáris egyenletrendszert kell megoldani, ami ismeretlent tartalmaz. Ennek nyílvánvalóan több megoldása is van, leghíreseb ezek közül az úgynevezett klasszikus ( negyedrend ) Runge-Kutta módszer, aminek Butcher táblázata a következ : 6 3 3 6 És maga az algoritmus: k = f(x j, y j ) k = f(x j + h, y j + h k ) k 3 = f(x j + h, y j + h k ) k 4 = f(x j + h, y j + hk 3 ) y j+ = y j + h 6 (k + k + k 3 + k 4 ) Ötödrend módszert ha próbálunk megkonstruálni, akkor bizony kiderül, hogy már legalább 6 lécs kell hozzá. Ebb l azt kapjuk, hogy m 5 lépcs esetén a rend alatta marad a lépcs számnak, ellentétben azzal, hogy m =,, 3, 4 esetén a lépcs szám és az elérhet konziszisztenciarend megegyezik. Az m lépcs számú explicit Runge-Kutta módszerre a következ elérhet konzisztenciarendek(p(m)) ismertek: 9

m 4 : p(m) = m, 5 m : p(m) m, 8 m : p(m) m, m : p(m) m 3, 4.3.. Tétel. A (4.) táblázatú explicit Runge-Kutta típusú módszer konzisztens, ha m b ik = a i minden i=,,...,m esetén, valamint 4.4. Hatékonyság k= m c k =. k= Szeretnénk az explicit Runge-Kutta módszerek hatékonyságát valahogyan mérni. Induljunk ki egy Q(ɛ) m veletigényb l, ami az ɛ pontossághoz szükséges, és legyen így a µ abszolút hatékonyság deniálva: µ := ɛo(ɛ). Így tehát, ha kis m veletigénnyel nagyon pontos megoldáshoz jutunk, akkor a módszerünk hatékonysága nagy. Ezzel két módszer relatítív hatékonyságát is meg tudjuk vizsgálni: µ / := µ µ = Q (ɛ) Q (ɛ), (4.4) azonos ɛ pontosság mellett. Ez azt mutatja, hányszor több m veletet igényel az els módszer, mint a második. Nézzük meg, hogy mi is a Runge-Kutta-módszerek esetén Q(ɛ). Tegyük fel, hogy a [, ] intervallumon h lépéstávolsággal lépkedünk végig, lépésenként m függvénykiértékeléssel. Így összesen m/h függvénykiértékelés fog kelleni. Ezen kívül, ha a módszer p-edrend, úgy a pontosság ɛ = O(h p ), viszont az egyszer ség kedvéért legyen ɛ = h p ( ez sajnos azt eredményezi, hogy azonos rend, de különböz módszerek között nem tudunk különbséget tenni). Ekkor a lépésköz h(ɛ) = ɛ /p, Q(ɛ) = Q m,p (ɛ) pedig az m lépcs s, p-edrend módszer m veletigénye. Q m,p (ɛ) = m h(ɛ) = m ɛ. /p 4.4.. Deníció. Az abszolút hatékonyságnak az alábbi kifejezést nevezzük: µ = µ(ɛ) := Q, (ɛ)/q m,p (ɛ) = mɛ, (p )/p 4.4.. Megjegyzés. Tehát ezek szerint az Euler-módszerel hasonlítsuk össze az adott m lépcs s, p- edrend Runge-Kutta módszert. 4.4.3. Megjegyzés. Természetesen két tetsz leges Runge-Kutta módszer is összehasonlíható közvetlenül, (4.4) alapján.

5. fejezet Beágyazott módszerek Most szeretnénk a lokális, avagy képlethibán javítni, ámde magának a képlethibának a becslése korántsem egyszer az eddigiek alapján, viszont a képlethiba becslésére szükségünk van, hisz egyrészt a lépésközöknek elég kicsinek kell lenniük, hogy a megoldások elég pontosak legyenek, másrészt a lépésközöknek elég nagynak is kell lenniük, hogy hogy elkerüljük a felesleges számolást. Ezért szükség van alternatív, jobb hibabecslésre. 5.. A Richardson extrapoláció Richardson ötlete az, hogy az ismert hibákra tekintsünk úgy, mint h-nak egy függvénye lenne. Feltesszük, hogy adottak az (x, y ) kezdeti értékek és h lépésköz, és egy adott p-edrend Runge-Kutta módszert használunk. Kiszámolunk két lépést, és kapunk két eredményt, y -et és y -t. Ezután ismét (x, y )-ból indulva, viszont most egy nagy lépést téve, vagyis h lépésközzel kiszámolunk egy lépést, jelöljük ennek eredményét w-vel. y globális problémája ismert korábbról: e = y(x + h) y = Ch p+ + O(h p+ ), (5.) ahol C tartalmazza a módszer hibaegyütthatóit és y() p + rend deriváltjait. y hibája két részb l tev dik össze: a második lépés lokális hibájából, ami ugyanaz, mint (5.), valamint az els lépés hozott hibájából, ami Így azt kapjuk, hogy e (I + h f y + O(h )). e = y(x + h) y = Ch p+ (I + O(h)) + h p+ (c + O(h)) + O(h p+ ), (5.) így e = Ch p+ + O(h p+ ). Így (5.)-hez hasonlóan, kijön, hogy a nagy lépés hibája y(x + h) w = C(h) p+ + O(h p+ ). (5.3)

O(h p+ )-t elhanyagolva, a (5.) és (5.3) egyenletekb l ki tudjuk fejezni, és el tudjuk tüntetni az ismeretlen C konstanst, és így extrapolálhatunk egy jobb ŷ -t az y(x + h)-hoz és így kapjuk az alábbi tételt: 5... Tétel. Tegyük fel, hogy y az eredményünk egy p-edrend Runge-Kutta módszerrel két h nagyságú lépéssel és w pedig az eredmény egy nagy, h hosszúságú lépéssel. Ekkor y extrapolálható, mint és egy p + rend approximáció y(x + h)-ra y(x + h) y = y w p + O(hp+ ) (5.4) ŷ = y + y w p 5... Megjegyzés. (5.4) egy egyszer eszköz a hibabecslésre, (5.5) pedig megengedi, hogy javítsunk a pontosságon azzal, hogy megemeljük a rendet. (5.5) 5.. Automatikus lépésválasztás Most akarunk egy olyan képletet, ami automatikusan beállítja a lépéshosszt, hogy elérjük az a lokális hiba el írt toleranciáját. Mindig, amikor egy h kezd lépéshosszt kiválasztunk, a módszer kiszámol két lépést h-val, valamint egy lépést h-val, ahogy az már a Richardson-extrapolációnál láttuk. A 5.. tételben látott módot kiszámolt lépésekhez a hibát könnyen meg tudjuk kapni (5.4)-ból, és jelölje err = p max y,i w i, i=,...,n d i ahol d i egy úgynevezett mérettényez, ami abszolút hiba esetén d i =, míg relatív hiba esetén d i = ŷ,i, de gyakran el fordul kevert méretezés is, például d i = max( ŷ,i, ŷ,i, ). Ez után összehasonlítjuk a hibát az elvárt toleranciával, ami legyen tol, ezzel megkaphatjuk egy optimális lépéshosszt a Ch p+ hibaviselkedés mellett: h opt = h p+ tol err. (5.6) A jó kódhoz szükség van még óvatosságra, be kell szoroznunk (5.6)-ot egy biztonsági szorzótényez vel, amit jelöljünk fac-vel. Ennek az értéke általában fac =, 8, fac =, 9, fac = (, 5) /(p ), vagy fac = (, 38) /(p ). Így a hiba következ leg nagy eséllyel elfogadható lesz, valamint h se nem n het túl gyorsan és nem is csökkenhet túl gyorsan. Például lehet az, hogy h uj = h min(facmax, max(facmin, fac p+ tol err )) legyen az új lépésközünk. Ekkor, ha err tol, akkor a két kiszámolt lépést elfogadjuk, és a következ új lépést h uj lépéshosszal próbáljuk meg. Egyébként mindkét esetet, vagyis a két h, illetve egy h lépéseket elutasítjuk és újraszámoljuk a lépéseket immár h uj lépéshosszal. facmax jelöli a maximális lépéstávolságot (általában,5 és 5 közötti értéket adnak meg neki ), aminek célja, hogy megakadályozza a túl nagy lépésnövekedést. Nyilvánvaló, ha ez túl kicsinek van választva, akkor az a számolás felesleges növekedését okozhatja.

5.3. A beágyazott módszerek Az ötlet az, hogy ahelyett, hogy a Richardson extrapolációt alkalmaznánk, olyan Runge-Kutta formulát el állítani, ami a k-k és y j+ mellett tartalmaz egy vele nem azonos rend ŷ j+ -et, vagyis ismerünk kell {c} m i= súlyok mellett egy {ĉ}m i= együtthatóhalmazt és így tehát két különböz rend módszert futtatunk egyszerre. Ekkor kontrollálhatjuk a lépéshosszt és a hibát, mert ekkor elég kicsi h-ra az egyik hibatagja elhanyagolható a másikéhoz képest. Mivel hogy ugyanazon k i -ket használja az így beágyazott módszer, így a b ij -k és a j -k nem változnak. Legyen m y j+ = y j + h c i k i rendje p, míg m ŷ j+ = y j + h ĉ i k i rendje q. Általában q = p vagy q = p + és p(q) formában jelöljük. Butcher-táblában a következ képp néz ki: a B c ĉ Nézzük meg, hogyan is fest ez egy konkrét esetben. Tekintsük meg a másodrend Fehlberg-formulát (jelöljük RKF (3)-ként), hogyan is jön ki. a b a 3 b 3 b 3 c c c 3 ĉ ĉ ĉ 3 Az egyenl ségeknek, amiket meg kell oldani: c + c + c 3 =, ĉ + ĉ + ĉ 3 = i= i= c a + c 3 a 3 =, ĉ a + ĉ 3 a 3 = ĉ a + ĉ 3 a 3 = 3, ĉ 3b 3 a = 6 Legyen a =, c 3 =, így kapjuk azt, hogy c = c =. A továbbiakban marad 4 egyenlet 5 ismeretlennel. Válasszuk a 3 -at -nek, így ĉ = 6, ĉ = 6, ĉ 3 = 4 6 és b 3 = 4. Butcher-táblája: 4 6 4 4 6 6 3

Fehlberg sok másik, különböz rend formulát is alkotott. A leginkább ismert és használt ezek közül a negyedrend, hat lépéses formula ( Fehlberg 4(5) ), aminek a táblája: 4 4 3 8 3 3 9 3 3 93 97 796 97 439 368 6 8 53 845 44 8 7 3544 859 565 44 4 97 5 48 y j+ 6 565 ŷ j+ 6 35 6656 85 44 5 856 5643 9 5 Felmerülhet ezek után az a természetes kérdés, hogy miért nem a legjobb lehetséges eredményt, azaz a nagyobb rend ŷ j+ -et használjuk numerikus válaszként és a következ lépés kezd értékeként. Erre természetes válaszként jöhet az, hogy az ŷ j+ y j+ becslés már nem is hibabecslés és minekünk a célunk a hibabecslés. Valamint egy másik dolog az, hogy Fehlberg, hogy optimalizálja a módszereit, minimalizálni igyekezett a kisebb rend y j+ hibaegyütthatóit. Ennek következtében viszont fennáll az a veszély, hogy y j+ ŷ j+ alábecsüli a lokális hibát. Ilyenformán érdekes lehet egy olyan módszer, amiben a magasabb rend tagnak minimalizáljuk a hibahatárát, miközben az alacsonyabb rend tag csak a lépéshossz kontrollálása miatt van jelen. Ilyen módszert konstruált Dormand és Prince és ez az egyik legtöbbet használt beágyazott módszer(dp 5(4)): 5 3 4 5 8 9 5 3 9 4 4 44 45 56 5 937 656 536 87 97 368 355 33 35 384 5 3 y j+ 35 384 5 3 3 9 64448 656 79 4673 49 547 76 53 8656 5 9 87 6784 5 9 87 6784 55 84 84 579 757 393 ŷ j+ 576 6695 64 997 87 339 4 5.3.. Megjegyzés. Ennél, ahogy a jelölésb l is látszik, y j+ ötödrend, míg ŷ j+ negyedrend. Ugyan a lépcs szám 7, de lépésenként csak 6 függvénykiértékelés szükséges, ugyanis az j-t l j + -be történ lépésnél k 7,j = f(x j + h, y j + h 6 b 7,i k i ), és ezután y j+ pont a k 7,j -ben szerepl második argumentum, vagyis y j+ = y j + h i= 6 b 7,i k i, mivel b 7,i = c i (i =,..., 6) és c 7 =. Ennek eredményeképp k 7,j megegyezik a következ lépés els k-jával így azt nem kell kiszámolnunk, vagyis k 7,j = k,j+. 5.3.. Megjegyzés. Van 3 lépcs s, nyolcadrend Dormand-Prince is. i= 4

6. fejezet A megismert módszerek bemutatása egy gyakorlati példán keresztül Most megnézzük, hogy egy konkrét gyakorlati példa esetén hogy viselkednek a módszerek, mindezt a Matlab program segítségével. Az általunk vizsgált kezdetiérték probléma legyen: y (x) = y(x) x + y() = ahol x [, ]. Ennek a pontos megoldása pedig: y(x) = e x x. 6.. Euler-módszer El ször akkor kezdjük a legegyszer bbel, az Euler-módszerrel. Els lépésként le kell programoznunk a módszert. A programunk a következ lesz: function [x,y]=euler_modszer(f,h,y,a,b) z=linspace(,,); g=@(z)(exp(z)-*z); d=g(z); plot(z,d,'-'); x=a:h:b; n=length(x); y=zeros(n,); y()=y; for i=:n- 5

end; y(i+)=y(i)+h*f(x(i),y(i)); hold on plot(x,y,'--r'); Az els sorban megadtuk a függvényünk nevét, amivel meghívjuk majd. 5 bemen és visszaadott paraméterünk van. A visszakapott paramétereknél x az id, y pedig a megoldás, azaz a közelített értékek vektorát jelenti. A bemen paramétereink a következ ek: f egy függvény, az általunk megoldani kívánt dierenciálegyenlet, amit külön programban megírunk és ebben a pontban meghívjuk. h lesz a lépéstávolság, y az y() kezdeti érték, a és b pedig az intervallum széle, ahol vizsgálni szeretnénk a problémát. A következ 4 sorban a pontos megoldást rajzoltatjuk ki. Ezek után, x lesz az [a, b] intervallum h lépéközzel vett felosztása, n pedig az x vektorunk hossza, vagyis a (megtett lépések száma-). Az y közelít megoldásokat tartalmazó vektor kezdetben egy n hosszú, -kból vektor, majd a kezdeti értékünk lesz y(). Majd jön egy for ciklus, mely tartalmazza magát a módszerünket, ezek után pedig kirajzoltatjuk a közelít megoldásunkat a pontos megoldás mellé. A megoldani kívánt egyenlet programja: function dy= egyenlet(x,y) dy=y+*x-; Kétféle lépéstávolsággal fogjuk megnézni a módszert, hogy hogyan alakul a pontosság, az egyik,, a másik, lesz. Most következik, hogy lefuttassuk a programot el ször h =, esetén, amit a következ sor beírásával teszünk meg: [x,y]=euler-modszer(@egyenlet,.,,,). A kirajzolt eredményünk: A következ táblázatban pedig a követekez ket láthatjuk: x i az adott id, y(i), p(i),h(i) pedig az x i id ponthoz tartozó közelítés, pontos érték és az ezek közötti különbség, vagyis a hiba. x i y(i) p(i) h(i),, 9, 95 5, 79e 3,, 8, 84, 43e, 3, 73, 7499, 8859e, 4, 664, 698, 775e, 5, 65, 6487 3, 8e, 6, 576, 6 5, 558e, 7, 5487, 638 6, 536e, 8, 5436, 655 8, 95e, 9, 5579, 6596, 66e, 5937, 783, 454e 6

Most pedig nézzük, hogy h =, esetén hogy változik az az explicit Euler-módszer eredménye. Hívás: [x,y]=euler-modszer(@egyenlet,.,,,). 7

6.. A javított Euler-módszer x i y(i) p(i) h(i),, 946, 95 5, 4879e 4,, 8, 84, 7e 3, 3, 7478, 7499, 99e 3, 4, 6889, 698, 96e 3, 5, 6446, 6487 4, 894e 3, 6, 667, 6 5, 4e 3, 7, 668, 638 6, 9893e 3, 8, 667, 655 8, 857e 3, 9, 6486, 6596, 97e, 748, 783, 3468e Hasonlóan az Euler-módszerhez, megírjuk a programot a javított Euler módszerhez. function [x,y]=jav_euler_erinto(f,h,y,a,b) z=linspace(,,); g=@(z)(exp(z)-*z); d=g(z); plot(z,d,'-'); x=a:h:b; n=length(x); y=zeros(n,); y()=y; for i=:n- y(i+)=y(i)+h*f(x(i)+h/,y(i)+h/*f(x(i),y(i))); end hold on plot(x,y,'--r'); axis equal Itt minden ugyan az, mint az Euler módszer esetén, csak a cikluson belül a módszer maga más. Most is, és, lépéstávolságokkal vizsgáljuk meg a módszert, és a következ képp hívjuk meg: jav-eulererinto(f,.,,,)/jav-euler-erinto(f,.,,,). A kirajzolt ábra és táblázat az értékekkel h=,-hez: 8

6.. ábra. Javított Euler h=, esetén x i y(i) p(i) h(i),, 946, 95 5, 4879e 4,, 8, 84, 7e 3, 3, 7478, 7499, 99e 3, 4, 6889, 698, 96e 3, 5, 6446, 6487 4, 894e 3, 6, 667, 6 5, 4e 3, 7, 668, 638 6, 9893e 3, 8, 667, 655 8, 857e 3, 9, 6486, 6596, 97e, 748, 783, 3468e A kirajzolt ábra és táblázat az értékekkel h =, -hez: 9

6.. ábra. Javított Euler h=, esetén x i y(i) p(i) h(i),, 95, 95, 88e 6,, 84, 84 4, 49e 6, 3, 7499, 7499 6, 6989e 6, 4, 698, 698 9, 87e 6, 5, 6487, 6487, 3637e 5, 6, 6, 6, 885e 5, 7, 637, 638, 338e 5, 8, 655, 655, 945e 5, 9, 6596, 6596 3, 668e 5, 78, 783 4, 4966e 5 Láthatóan hatékonyabb, pontosabb eredményt ad, mint az Euler módszer, tényleg javítva lett így az Euler-módszer. Mint látható, az ábrán már szemmel látható különbség már nincs a közelítés és a pontos értek között, és a következ numerikus módszerek várhatóan még pontosabbak, így a következ kben már csak a hiba értékét nézzük. 6.3. Runge-Kutta és beágyazott módszerek Vizsgáljuk meg a kezdeti érték feladat numerikus kozelítését egy Runge-Kutta módszerrel, mégpedig a már megismert harmadrend Runge-Kutta módszerrel, melyhez a következ Butcher-tábla tartozik: 3

Leprogramozva: 3 3 3 3 3 4 4 function [x,y]=rk3(f,h,y,a,b) x=a:h:b; n=length(x); y=zeros(n,); y()=y; for i=:n- k=f(x(i),y(i)); k=f(x(i)+h/3,y(i)+h/3*k); k3=f(x(i)+*h/3,y(i)+*h/3*k); y(i+)=y(i)+h/4*(k+3*k3); end; Itt is hasonló a program, mint az eddigieknél, csupán a ciklus más, a módszernek megfelel en. A programot RK3(f,.,,,), illetve RK3(f,.,,,) parancsokkal hívjuk meg. h =, -re az alábbi eredményeket kapjuk: x i y(i) p(i) h(i),, 95, 95 4, 54e 6,, 84, 84 9, 397e 6, 3, 7499, 7499, 5578e 5, 4, 698, 698, 955e 5, 5, 6487, 6487 3, 7e 5, 6, 6, 6 4, 56e 5, 7, 637, 638 5, 45e 5, 8, 655, 655 6, 8489e 5, 9, 6596, 6596 8, 554e 5, 78, 783, 457e 4 h =, esetén pedig ezek jönnek ki: 3

x i y(i) p(i) h(i),, 95, 95 4, 568e 9,, 84, 84, 97e 8, 3, 7499, 7499, 6739e 8, 4, 698, 698, 4666e 8, 5, 6487, 6487 3, 475e 8, 6, 6, 6 4, 59e 8, 7, 638, 638 5, 867e 8, 8, 655, 655 7, 3594e 8, 9, 6596, 6596 9, 5e 8, 783, 783, 36e 7 Láthatóan sokkal jobb közelítést ad már h =, -re is ez a módszer, mint a már korábban látott Euler, illetve hasonlót, mint a javított Euler módszer,-es lépéstávolsággal, h =, -re viszont már annál is jóval hatékonyabb. Most jöjjön egy beágyazott módszer is, mégpedig a Dormand és Prince féle módszer. Mivel a Matlabban megtalálható ez a módszer, mint beépített függvény, egészen pontosan az ode45 függvény, ezért azt használjuk, mégpedig a parancsokat írjuk be: tspan =:.:; ( illetve tspan=:.:; ) [t,x]=ode45(@egyenlet,tspan,); Vagyis a [, ] intervallumot felosztjuk a megfelel módon, meghívjuk a megoldani kívánt dierenciálegyenletünket, a felosztott intervallumunkat, valamint a kezdeti értéket. Így az alábbi hibaértékeket kapjuk: x i y, (i) y, (i), 5, 39e 9, 5769e, 5, 9565e 9 5, 6957e, 3 6, 8977e 9 9, 44e, 4 7, 979e 9, 394e 9, 5 9, 937e 9, 9e 9, 6, 585e 8, 549e 9, 7, 68e 8 3, 867e 9, 8, 3967e 8 4, 53e 9, 9, 69e 8 5, 64e 9 5, 779e 8 6, 338e 9 Látszik, hogy a két eset között nincs nagy eltérés, ez annak is köszönhet, hogy nem állandó, hanem változó a lépéshossz. 3

6.4. Összefoglalás Láthatjuk, hogy a legjobb eredményt a Dormand-Prince féle módszer adta, ahogy azt várhattuk. Nyílván ez sem tökéletes, és nem merev dierenciálegyenletek megoldására használható, méghozzá ez a leginkább ajánlott módszer az ilyen típusú dierenciálegyenletekre. Persze most csak az egylépéses módszereket körében vizsgálódtunk, de vannak további beágyazott módszerek, többlépéses módszerek, iletve olyan jól használható numerikus módszerek, melyekkel a merev dierenciálegyenletek is jól közelíthet ek. 33

Köszönetnyilvánítás Szeretném megköszönni témavezet mnek, Csörg Gábornak a segítséget, amit kaptam ahhoz, hogy ez a szakdolgozat elkészülhessen. 34

Irodalomjegyzék [] E.Hairer, S.P.Norsett, G.Wanner:Solving Ordinary Dierential Equations I, Springer-Verlag, 987. [] Stoyan Gisbert, Takó Galina:Numerikus módszerek., Typotex, 995. [3] Faragó István, Horváth Róbert: Numerikus módszerek, Typotex, 3. [4] E. Hairer, G.Wanner: Solving Ordinary Diferential Equation II, 99. 35