Közönséges differenciál egyenletek megoldása numerikus módszerekkel: egylépéses numerikus eljárások Bevezetés Ebben a cikkben megmutatjuk, hogyan használhatóak a Mathematica egylépéses numerikus eljárásai, közönséges differenciál egyenletek megoldására. Azt fogjuk bemutatni hogyan oldunk meg y ( t ) y 0 = 0 kezdeti értékekkel megadott y ( t0 ) = y0 típusú differenciál egyenletet, ha az eredményeket a [ t 0,t N ] intervallum egyenletes felosztásának alkalmazásával kapjuk, pld. t n = t 0 + nh, n=0, N. A tn t0 h = távolságot lépésköznek nevezzük. y n az y ( t n ) közelítő értéke lesz, így a N megoldandó differenciál egyenletünk f = f t, y ) alakú lesz. 1. Az NDSOLVE parancs használata n ( n n A közönséges differenciál egyenleteket (DE) nem lehet mindig egzakt formában integrálni. Ha a Mathematica nem tudja egzaktan megoldani a differenciál egyenletet akkor a válasza ugyanaz lesz mint a következő bemeneti adatsorra adott válasz: Ilyen esetben a közönséges differenciál egyenletet közelítő megoldással lehet megoldani, amennyiben csak egy megoldása van egy adott kezdeti érték problémával meghatározva. Erre a megfelelő parancs az NDSolve, melynek alakja: Amint látható az NDSolve válasza egy hozzárendelés egy interpoláló függvény alakjához. Ezért az eredményt egy értéktáblázattá kell alakítani, hogy grafikusan ábrázolhassuk a közelítő megoldást, amit a numerikus módszerünk szolgáltat. Ezt a következő formában oldhatjuk meg:
Így a függvény bármelyik értéke, az intervallum bármelyik felosztási pontjában, számolható. A [0,1] intervallum egy adott h=0.1 osztásközzel megadott értékei esetén a következő értéktáblázatot kapjuk: Az eredményt ábrázolhatjuk grafikusan is a Plot parancs segítségével. Példának okáért a [0,2] intervallumra számolt közelítő megoldás képe:
Megjegyzések: 1. A kapott megoldás csak azon az intervallumon érvényes, amit megadtunk a megoldás kiszámításához. Amennyiben olyan pontban kérjük a megoldást, ami kívül esik ezen az intervallumon, akkor a Mathematica vissza fog jelezni, hogy extrapolálásba kezdett a válasz adás érdekében: 2. A Help menüben megnézhetjük, hogy az NDSolve melyik numerikus eljárást használja éppen Adams, Runge-Kutta, Euler, stb. numerikus eljárások közül. Példa 1. Oldjuk meg numerikusan az y(0)=1 kezdeti érték problémával megadott y = y( 1 sint) differenciál egyenletet az [0,1] intervallumon, 0.05 lépésközzel. Megoldás: Közvetlenül az NDSolve parancsot használjuk a megoldáshoz:
A megoldás függvény meghatározása után kiszámoljuk az értéktáblázatunkat: 2. Euler módszer Az Euler módszer a legegyszerűbb egylépéses módszer. A szokásos jelöléseket használva az y ( t0 ) = y0 kezdeti értékekkel meghatározott y = f ( t, y) DE megoldása esetén a t = [ a, ] intervallumon az Euler algoritmus alakja: 0 b
b a Ahol h = a lépésköz, és tn = tn 1 + h = a + nh. m Könnyen megmutatható, hogy a megoldás konvergens és határozott lesz, mivel az egyenlet az általános numerikus módszer elmélet szerinti p(x)=x-1 karakterisztikus egyenlettel jellemezhető. Az utolsó kifejezést a Mathematica-ban a következő formában írjuk be: Ahol f a differenciál egyenletünkhöz rendelt függvény, h a lépésköz, ini a kezdeti érték probléma, az a és a b pedig az intervallum végpontjai. Az eredmény a közzelítő megoldást értéktáblázat formájában adja meg. 4t Lássuk ezt a gondolatmenetet az y(0)=1 kezdeti értékkel megadott y = ty + DE y esetén, ha az intervallum [0,1], a lépésköz pedig 0.1. A megfelelő függvényt értelmezve: Alkalmazzuk az előbbi algoritmust, ahol az elnevezéseknek megfelelően
Annak érdekében, hogy megvizsgáljuk a megoldás pontosságát, az egzakt differenciál egyenlet megoldásának értékeit kiszámoljuk és azokat összehasonlítjuk az Euler módszerrel kapott értékekkel. A DSolve parancsot használjuk: A megoldásfüggvény adott, értékeit táblázatba számoljuk: Az összehasonlítást megtehetjük grafikusan is. Egy eljárás segítségével a Mathematica képes az Euler módszerrel kapott megoldást pirosan ábrázolni. Ez az eljárás a grafeuler és ugyanazok a paraméterei, mint az előzőekben használt rajzoló eljárásnak.
A közelítő és az egzakt megoldás együttes ábrázolásával könnyen összehasonlíthatóvá válik a két megoldás.
Példa 2. Az Euler módszer segítségével számoljunk közelítő megoldást az y(0)=1 kezdeti értékkel meghatározott y = 3 ( y + t) differenciál egyenletre a [0,1] intervallumon 0.1 osztásközzel. Ábrázoljuk az így kapott megoldást az egzakt megoldással egy grafikonon. Magyarázza a közelítő megoldás hibáit és javítsa a közelítést a lépésköz finomításával. Megoldás A durva és az egzakt megoldások kiszámolása a DSolve paranccsal:
A kapott megoldás függvény meg van határozva. A megoldások grafikus képe az előzőek szerint számolva:
Amint látható, az Euler módszerrel kapott megoldás nem túl jó. Ez azért van, mert az egzakt megoldás exponenciális karaktere miatt sokkal meredekebben növekszik. Egy sokkal jobb közelítést kapunk, ha finomítjuk az lépésköz osztását.