Ugrás a tartalomhoz

Impulzív jelenségek modelljei

Karsai János

Typotex

2.3. Az ODESolve programcsomag

2.3. Az ODESolve programcsomag

A Mathematica differenciálegyenlet-megoldó programjainak van néhány hátránya. Például, egyszerre csak egy kezdeti értékkel képesek megoldani az adott egyenletet. A függő változókat mint függvényeket kell megadni (x[t], ...). Ez nem illeszkedik a vektormezők megadásához, ahol a változók mind argumentum nélkül adandók meg. A kényelmesebb vizsgálatok segítésére készült az ODESolve program.

Parancsösszefoglaló

Az ODESolve

x'=f(t,x)
x ' = f ? ( t , x )

alakú n-dimenziós elsőrendű differenciálegyenlet numerikus megoldását végzi az NDSolve program felhasználásával, több kezdeti feltétellel. A rendszer megoldásához meg kell adni az egyenletet és a kezdeti értékeket. A program eredményét InterpolatingFunction objektumokból álló listában kapjuk meg. A program indítása az alábbi módon történik:

ODESolve[xdotlist,varlist,x0list,{t,t0,t1},options]

Az egyes paraméterek jelentése:

varlist {x1, x2, ..., xn}, függő változók listája
xdotlist {f1[t, x1, ..., xn], ..., fn[t, x1, ..., xn]} a differenciálegyenlet jobb oldala
x0list {{x10, ..., xn0}, ..., {x1M, ..., xnM}} kezdőértékek listája, M db n-dimenziós vektor
t független változó
[t0, t1] a megoldás intervalluma
options az NDSolve lehetséges opciói

  • Korlátozások

A magasabb rendű egyenleteket át kell alakítani a szokásos módon elsőrendűvé az ODESolve számára. Ez tényleges korlátozást nem jelent.

A program használata

A DSolve és NDSolve működését a fékezett harmonikus oszcillátor

x'=y, y'=–y–x. x ' = y , y ' = - y - x . (2.3.1)

egyenletének megoldásán keresztül mutattuk be. Használjuk most is ezt a rendszert.

2.3.1. Példa.

A (2.3.1) rendszer leírásához a Mathematica utasítások:

var={x,y}; xdot={y,–y–x};

var = { x , y } ; xdot = { y , - y - x } ;

Az xdot lista közvetlenül használható a PlotVectorField számára is. A rendszer független változója t, és a [t0,t1]

[ t0 , t1 ] intervallumon oldjuk meg az {1,0} és {0,1} kezdeti feltételekkel, amelyeket az x0list változóban tárolunk.

t0=0; t1=7; x0list={{1,0},{0,1}};

t0 = 0 ; t1 = 7 ; x0list = { { 1 , 0 } , { 0 , 1 } } ;

Az ODESolve program most indítható:

sol=ODESolve[xdot,var, x0list,{t,t0,t1}]

sol = ODESolve [ xdot , var , x0list , { t , t0 , t1 } ]

Az első {1,0} kezdeti feltételekhez tartozó megoldást és deriváltját a sol[[1]] részlista tartalmazza:

Plot[Evaluate[sol[[1]]],{t,t0,t1},PlotStyle›{RGBColor[0,0,1],RGBColor[1,0,0]}];

Plot [ Evaluate [ sol [ 1 ] ] , { t , t0 , t1 } , PlotStyle { RGBColor [ 0 , 0 , 1 ] , RGBColor [ 1 , 0 , 0 ] } ] ;

A második {0,1} kezdeti feltételekhez tartozó megoldást a sol[[2]] lista tartalmazza, amit a fentihez hasonlóan ábrázolhatunk.

  • Megjegyzés

Amennyiben csupán egy kezdeti feltételt adunk meg, akkor is kettős listát kell használnunk, azaz

x0list={{0.5,0.5}};

x0list = { { 0.5 , 0.5 } } ;

Ezzel kapcsolatban emlékeztetnünk kell még arra is, hogy a {1,2,3} és a {{1},{2},{3}} listák nem azonosak.