Karsai János
Typotex
Ebben a pontban a differenciálegyenletek vizsgálatát segítő Mathematica eszközöket tekintjük át. Megjegyezzük, hogy több könyv és programcsomag ismert, amelyek kiterjesztik vagy elegánsabbá teszik az alapfunkciókat. Például a Gray, Mezzino, Pinsky [11] könyvéhez mellékelt programcsomag számos új formális megoldó-algoritmust tartalmaz, a VisualDSolve [26] csomagnak pedig igen elegáns megjelenítési lehetőségei vannak.
Parancsösszefoglaló
|
Az
[D]
[D]
[D]
[D]
[D]PlotVectorField
és PlotVectorField3D
utasítások használatát tekintjük át. Részletes információ a Graphics`PlotField`
és a Graphics`PlotField3D`
programcsomagok leírásában található.
1D differenciálegyenlet iránymezője
Tekintsük az
[D]
[D]
[D]
2D autonóm differenciálegyenlet trajektóriáihoz tartozó vektormező
Tekintsük a csillapított harmonikus rezgés
[D]
[D]
[D]
[D]
2D differenciálegyenlet iránymezője 3D-ben
Az
[D]
[D]
[D]
Vigyázat! A perspektivikus ábrázolás becsaphatja szemünket. Érdemes több nézőpontból megnézni az ábrát (lásd a ViewPoint
opciót).
[D]
[D]
3D differenciálegyenletekhez tartozó vektormezők
A 3D autonóm egyenletek esetén a trajektóriák vektormezője (hasonlóan a 2D rendszerekhez) ábrázolható. Az
[D]
[D]
[D]
[D]
[D]
Differenciálegyenletek szimbolikus megoldása
A Mathematica
DSolve
utasítása bizonyos integrálható típusú közönséges differenciálegyenletek és parciális differenciálegyenletek kezdeti- és peremérték problémáinak formális megoldásait határozza meg. Sok egyszerűsítési és transzformációs lehetőséget a DSolve
nem ismer. Az érdeklődő olvasónak javasoljuk Gray, Mezzino, Pinsky [11] könyvét. Az ott használt ODE
programcsomag számos egyenlettípus integrálását el tudja végezni.
Általános megoldás
Példaként tekintsük a fékezett harmonikus oszcillátor egyenletét (amelynek 2D vektormezőjét és 3D iránymezőjét már ábrázoltuk) mint másodfokú egyenletet és mint síkbeli rendszert is.
A másodfokú egyenlet alak
[D]
[D]
[D]
A megoldást helyettesítési szabály alakjában kapjuk. Az általános megoldásban szereplő konstansok C[1]
és C[2]
(n-edfokú vagy n-dimenziós esetben, C[1], C[2],..., C[n]
). Vegyük észre, hogy mivel nem tudjuk az a együttható nagyságát, az exponenciális kifejezés lehet valós és komplex is. Az
[D]
[D]
[D]
A 2D rendszer alak
[D]
[D]
[D]
A megoldás most mindkét koordinátát tartalmazza. Az első komponens formálisan nem azonos a másodrendű egyenlet megoldásával. Ellenőrizhető, hogy ugyanazt a megoldáshalmazt állítják elő.
Kezdetiérték-probléma megoldása
A kezdeti értékeket az egyenlet részeként kell a DSolve
utasításnak átadni. Tekintsük ismét az oszcillátor példáját mindkét esetben. Konkrét értékeket adunk meg, de a megoldást szimbolikus értékek esetén is megkapjuk.
A másodfokú egyenlet alak
[D]
[D]
[D]
[D]
[D]
A 2D rendszer alak
[D]
[D]
[D]
[D]
[D]
[D]
Kezdetiérték-probléma numerikus megoldása
Közelítő megoldásokat az NDSolve
program segítségével kapunk. Használata hasonló a DSolve
programhoz. A megoldáshoz meg kell adni az intervallumot, amelyen a megoldást elő kívánjuk állítani. Több, a pontosság javítására szolgáló opciója van. Részletes leírás és az alkalmazott numerikus eljárás implementációjával kapcsolatos megjegyzések a Help-ben találhatók. A megoldásokat helyettesítési szabályként kapjuk, amelynek jobb oldala InterpolatingFunction
objektum, amellyel kapcsolatban néhány példát később bemutatunk. Tekintsük ismét a fékezett oszcillátort mint másodfokú egyenletet és mint 2D rendszert is.
A másodfokú egyenlet alak
[D]
[D]
[D]
[D]
A 2D rendszer alak
[D]
[D]
[D]
[D]
[D]
[D]
A megoldás trajektóriája
[D]
Az „InterpolatingFunction” objektum
Most a misztikus InterpolatingFunction
objektummal foglalkozunk. Az adatok függvényekkel való közelítésének egyik alapvető módja az interpoláció, amikor bizonyos helyeken előírjuk a függvény és esetleg valamely deriváltjainak az értékét. A Mathematica több interpolációs utasítással rendekezik (lásd az Interpolation
és a hozzá kapcsolódó utasításokat). Mindegyikük InterpolatingFunction
objektumot eredményez. Mivel a differenciálegyenletek megoldásainak közelítő algoritmusai adathalmazokat állítanak elő, kézenfekvő az interpoláció azonnali elvégzése. Az InterpolatingFunction
objektum bonyolult szerkezetű, de szerencsére ismeretére nincs gyakran szükség (a kivételek közé tartozik az impulzív rendszerek megoldására később bemutatandó IDESolve
programcsomag). Használata nagyon kényelmes, ugyanúgy kezelhető, ábrázolható, deriváltható(!), mint a formulákkal megadott függvények. Példaként tekintsük most a fékezett oszcillátor imént kapott megoldásait.
[D]
A megoldás koordinátái
[D]
A koordináták deriváltjai
[D]
[D]
[D]
[D]
Vegyük észre, hogy a második deriváltak még teljesen pontosak, a harmadik derivált kicsit már tüskés. A negyedik derivált viszont már használhatatlan.