Ugrás a tartalomhoz

Impulzív jelenségek modelljei

Karsai János

Typotex

4.4. Modellezési séma 2D rendszerekre

4.4. Modellezési séma 2D rendszerekre

A síkbeli, rögzített idejű impulzusokkal perturbált rendszerek számítógépes vizsgálatának alapsémája nagyon hasonló az egydimenziós sémához. Különbség elsősorban a megjelenítési lehetőségekben van. A rendszer az alábbi alakú:

x^'=f(x,y), y^'=g(x,y), t?t_i, (x(t_i+0),y(t_i+0))=I_i(x(t_i–0),y(t_i–0)), x ' = f ? ( x , y ) , y ' = g ? ( x , y ) , t ? t i , ? ( x ? ( t i + 0 ) , y ? ( t i + 0 ) ) = I i ( x ? ( t i - 0 ) , y ? ( t i - 0 ) ) , (4.4.1)

ahol x,y?R

x , y ? R , t_i///<///t_(i+1)... t i ///</// t i + 1 ... .

A modellezés lépései

A legfontosabb lépések az alábbiak:

–  A differenciálegyenlet és az impulzusok definiálása  
–  A megoldás és megjelenítés paramétereinek megadása 
–  A vektormezők ábrázolása a 2D fázistérben 
–  Az iránymező és impulzusmező megrajzolása a 3D térben 
–  A differenciálegyenlet egyensúlyi helyzetei 
–  Az impulzusfüggvények fixpontjai 
–  Az impulzív rendszer megoldása 
–  Megoldások ábrázolása 
–  Trajektóriák ábrázolása a 2D térben 
–  A megoldások (integrálgörbék) ábrázolása a 3D térben 
–  Paraméterek változtatása: vizualizációs alkalmazások. 

A lépéseket egy impulzívan perturbált lineáris differenciálegyenlet példáján mutatjuk be (az alkalmazásokat és a matematikai kérdéseket később tárgyaljuk):

x'=y–0.1 x, y'=–y, t?t_i, x(t_i+0)=x^2(t_i–0)sign(x(t_i–0)), y(t_i+0)=0.8y(t_i–0).
x ' = y - 0.1 x , y ' = - y , t ? t i , x ? ( t i + 0 ) = x 2 ( t i - 0 ) ? sign ? ( x ? ( t i - 0 ) ) , y ? ( t i + 0 ) = 0.8 y ? ( t i - 0 ) .

  • A rendszer megadása

  • A differenciálegyenlet

xyvar az ismeretlenek listája
t független változó
xydot xyvar'=xydot xyvar' = xydot egyenlet jobb oldala

xyvar={x,y}; A=(–0.1 1 / 0 –1); xydot=A.xyvar;

xyvar = { x , y } ; A = ( - 0.1 1 0 - 1 ) ; xydot = A . xyvar ;

  • Az impulzusok

Imax az impulzusok maximális száma
tn az impulzusok idejét tartalmazó lista
Imp[k, tn, xn] az impulzus a tn[[k]] pillanatban

Az impulzus Mathematica-beli alakja:

x[tn[[k]]+0]:=x[tn[[k]]]^2Sign[x[tn[[k]]]].y[tn[[k]]+0]:=0.8 y[tn[[k]]].

x [ tn [ k ] + 0 ] := x [ tn [ k ] ] 2 ? Sign [ x [ tn [ k ] ] ] . y [ tn [ k ] + 0 ] := 0.8 y [ tn [ k ] ] .

Clear[tn,Imp,T]; Imax=50; T=1.;

Clear [ tn , Imp , T ] ; Imax = 50 ; T = 1. ;

tn=Table[nT,{n,0,Imax}];

tn = Table [ n ? T , { n , 0 , Imax } ] ;

Imp[n_,tn_List,x_List]:={Abs[x[[1]]]^2Sign[x[[1]]],0.8 x[[2]]};

Imp [ n_ , tn_List , x_List ] := { Abs [ x [ 1 ] ] 2 ? Sign [ x [ 1 ] ] , 0.8 x [ 2 ] } ;

  • A megoldás és megjelenítés paraméterei

t független változó
t0 kezdő időpillanat
t1 végső időpillanat
[x1, x2], [y1, y2] megjelenítési intervallumok

t0=0; t1=6; x1=y1=–1.; x2=y2=1.;

t0 = 0 ; t1 = 6 ; x1 = y1 = - 1. ; x2 = y2 = 1. ;

  • Vektormezők a fázistérben

  • A differenciálegyenlet vektormezője a 2D térben

PlotFld=PlotVectorField[xydot,{x,x1,x2},{y,y1,y2},Axes›True];

PlotFld = PlotVectorField [ xydot , { x , x1 , x2 } , { y , y1 , y2 } , Axes True ] ;

  • Az impulzusmező

Az adott esetben az impulzusok nem függnek a t_i

t i pillanattól. Az ugrások a fázistérben vektormezőként ábrázolhatók. Megjegyezzük, hogy a nyilak nem csak irányt jelentenek. Impulzus hatására a megoldás a kezdőpontból a végpontba ugrik. Ez néha kaotikus ábrát eredményezhet. Ha az impulzus függ t_i t i -től, akkor animáció készíthető, vagy hasznos lehet az impulzusmező 3D térbeli ábrázolása (lásd a következő pontot).

PlotImp=PlotVectorField[Imp[1,tn,xyvar]–xyvar,{x,x1,x2},{y,y1,y2},Axes›True,ScaleFactor›None];

PlotImp = PlotVectorField [ Imp [ 1 , tn , xyvar ] - xyvar , { x , x1 , x2 } , { y , y1 , y2 } , Axes True , ScaleFactor None ] ;

A két mező együttes ábrázolásához szükséges az egyik mező színezése (ColorFunction). Ezt az olvasóra bízzuk.

  • Vektormezők a 3D kibővített fázistérben

  • A differenciálegyenlet iránymezője

PlotFld3D=PlotVectorField3D[Flatten[{1,xydot}],{t,t0,t1},{x,x1,x2},{y,y1,y2},Axes›True];

PlotFld3D = PlotVectorField3D [ Flatten [ { 1 , xydot } ] , { t , t0 , t1 } , { x , x1 , x2 } , { y , y1 , y2 } , Axes True ] ;

  • Az impulzusmező

PlotImp3D=PlotFixedImpulseField3D[Imp,tn,7,{x,x1,x2,0.3},{y,y1,y2,0.3}];

PlotImp3D = PlotFixedImpulseField3D [ Imp , tn , 7 , { x , x1 , x2 , 0.3 } , { y , y1 , y2 , 0.3 } ] ;

  • Egyensúlyi helyzetek

  • A differenciálegyenlet egyensúlyi helyzetei

Az egyenletek megoldására vonatkozó szimbolikus és numerikus eljárásokat lásd az elektronikus melléklet M1.4. fejezetében.

Steady={x,y} /. NSolve[xydot==0,{x,y}]

Steady = { x , y } /. NSolve [ xydot == 0 , { x , y } ]

{{0,0}}

{ { 0 , 0 } }

  • Az impulzusfüggvények fixpontjai

SteadyImp={x,y} /. NSolve[Imp[1,tn,xyvar]==xyvar,xyvar]

SteadyImp = { x , y } /. NSolve [ Imp [ 1 , tn , xyvar ] ? xyvar , xyvar ]

{{0.,0.},{–1.,0.},{0.,0.},{1.,0.}}

{ { 0. , 0. } , { - 1. , 0. } , { 0. , 0. } , { 1. , 0. } }

  • Az impulzív rendszer megoldása

A megoldáshoz az IDESolve numerikus megoldóprogramot használjuk. A kezdeti feltételeket az xy0tab lista tartalmazza, azaz több kezdeti értéket megadva xy[t0]=xy0tab[[i]].

xy0tab=Table[N[0.8{Cos[u],Sin[u]},2],{u,0,2?,(?/8)}];

xy0tab = Table [ N [ 0.8 { Cos [ u ] , Sin [ u ] } , 2 ] , { u , 0 , 2 ? ? , ? 8 } ] ;

Traj[t_]=IDESolve[xydot,xyvar,tn,Imp,xy0tab,{t,t0,t1}];

Traj [ t_ ] = IDESolve [ xydot , xyvar , tn , Imp , xy0tab , { t , t0 , t1 } ] ;

  • A megoldások koordinátái

Helytakarékosság miatt a kapott 16 megoldásból kettőnek a koordinátáit ábrázoljuk.

SolPlot[Traj[t],{t,t0,t1},xyvar,PlotRange›All];

SolPlot [ Traj [ t ] , { t , t0 , t1 } , xyvar , PlotRange All ] ;

  • Ábrázolások a fázistérben E

    E

A rendszer fejlődését jól mutatja az alábbi animáció, amelyben a kezdeti értékek végigfutnak a kezdeti halmaz pontjain. Ezután ábrázolhatjuk a differenciálegyenlet vektormezőjét (az egyenlet autonóm!) és a rendszer trajektóriáit. Az impulzusmezőt most az ábrázolásból elhagyjuk, mert az ugrásokat a trajektóriák is jól mutatják, az ábra pedig túlzsúfolt lenne.

Table[PhasePlot[{Traj[t][[i]]},{t,t0,t1},AxesLabel›{x,y},PlotRange›{{x1,x2},{y1,y2}}],{i,1,Length[Traj[t]]}];

Table [ PhasePlot [ { Traj [ t ] [ i ] } , { t , t0 , t1 } , AxesLabel { x , y } , PlotRange { { x1 , x2 } , { y1 , y2 } } ] , { i , 1 , Length [ Traj [ t ] ] } ] ;

p0=PhasePlot[Traj[t],{t,t0,t1}];

p0 = PhasePlot [ Traj [ t ] , { t , t0 , t1 } ] ;

Show[PlotFld,p0,PlotRange›All,AxesLabel›{x,y},AspectRatio›Automatic];

Show [ PlotFld , p0 , PlotRange All , AxesLabel { x , y } , AspectRatio Automatic ] ;

  • Integrálgörbék a 3D térben E

    E

A fázistérbeli animációhoz hasonló most is készíthető. Végül ábrázoljuk együtt a megoldások integrálgörbéit, az irány- és impulzusmezőt.

showsol3d=Table[SolPlot3DBW[{Traj[t][[i]]},{t,t0,t1}, PlotRange›{{t0,t1},{x1,x2},{y1,y2}},AxesLabel›{t,x,y}],{i,1,Length[Traj[t]]}];

showsol3d = Table [ SolPlot3DBW [ { Traj [ t ] [ i ] } , { t , t0 , t1 } , PlotRange { { t0 , t1 } , { x1 , x2 } , { y1 , y2 } } , AxesLabel { t , x , y } ] , { i , 1 , Length [ Traj [ t ] ] } ] ;

Show[PlotFld3D,PlotImp3D,showsol3d,Axes›True,BoxRatios›Automatic,PlotRange›All];

Show [ PlotFld3D , PlotImp3D , showsol3d , Axes True , BoxRatios Automatic , PlotRange All ] ;