Mathematica  és differenciálegyenletek

Vannak ilyenek: 
Tóth J.; Simon L. P.: Differenciálegyenletek. Bevezetés az elméletbe és az alkalmazásokba, TYPOTEX, Budapest, 2005, 2009.
Tóth J.; Simon L. P., Csikja R.: Differenciálegyenletek. Feladatgyűjtemény. http://www.math.bme.hu/~csikja/files/peldatar.pdf

Szimbolikus megoldások

Most: köz. de. igen, PDE nem

Nagyjából azt tudja, amit Kamke.

E. Kamke : Differentialgleichungen : Lösungsmethoden und Lösungen, 1. Gewöhnliche Differentialgleichungen, 2. Partielle  Differentialgleichungen

Egyszerű példák

Lineáris egyenletek és rendszerek

Állandó együtthatós inhomogén lineáris egyenlet

ClearAll[egy,kezd1,kezd2];
egy=y'[x]==2x-y[x];
kezd1=y[3]==-3;kezd2=y[2]==-3;

ds1=DSolve[{egy,kezd1},y[x],x]

y[x]/.ds1

FullForm[HoldForm[y[x]/.ds1]]

ds2=First@DSolve[{egy,kezd1},y,x]

A megoldás függvény, nem függvényérték. A későbbiekben ez használható jobban.

y[x]/.First@ds1/.{x->3}

y[3]/.ds2

ds2=First@DSolve[{egy,kezd2},y,x]

y'[3]/.ds2

y'[3]/.ds2

N[%]

DSolve[{egy,y[1]==c},y[x],x][[1]]

DSolve[{egy,y[1]==c},y[x],x][[1,1]]

DSolve[{egy,y[1]==c},y[x],x][[1,1,2]]

Simplify[%]

ClearAll[ds];
ds[x_,c_]:=Simplify[DSolve[{egy,y[1]==c},y[x],x][[1,1,2]]]

ds[x,c]

Plot3D[Evaluate[ds[x,c]],{x,0,3},{c,-1,2},AxesLabel->{x,c,Style[y,24,Bold]}]

Table[ds[x,c],{c,-1,2,0.1}];

Plot[Evaluate[Table[ds[x,c],{c,-1,2,0.1}]],{x,0,3},AxesLabel->{x,y}]

Manipulate[Plot[Evaluate[ds[x,c]],{x,0,3},AxesLabel->{x,y},PlotRange->{-3,3}],{c,-1,2,0.1}]

Paraméterekkel is.

DSolve[{y'[x]==a x+b y[x]},y[x],x]

1. HF: ami idáig történt, azt reprodukáljuk a ParametricNDSolve(Value) függvényekkel.

Szakaszonként folytonosan differenciálható bemenet.

DSolve[{y''[x]-y[x]==Max[x,(x^2)],y[0]==1,y'[0]==2},y,x]

(Ilyen függvényt mi is tudunk csinálni a Piecewise[] függvény használatával.)

Változó együtthatós másodrendű lineáris egyenletek

Euler-féle is.

DSolve[(x^2)y''[x] +4x y'[x]+7y[x]==0,y[x],x]

DSolve[y''[x]== Exp[-x] y[x],y,x]

DSolve[x y''[x]+2 y'[x]-x y[x]==Sin[x],y,x]

Peremérték-feladatok

DSolve[{y''[x]-x y[x]==0,y[0]==1,y[9]==1},y,x]

Célbalövéssel

Manipulate[Plot[Evaluate[y[t]/.First[DSolve[ {y''[x]==-x y[x],y[0]==a,y'[0]==b},y,x]]],{t,0,4},Epilog->{Point[{4,1/2}],Green,Arrow[{{0,a},{1,b+a}}],Red,Point[{0,a}]},ImagePadding->25,PlotRange->3],
{{a,1,TraditionalForm[y[0]]},-3,3},
{{b,0,TraditionalForm[y'[0]]},-3,3}]

Lineáris rendszer fázisképe

DSolve[{x'[t]==-2y[t]+3x[t],y'[t]==15x[t]-y[t],x[0]==a,y[0]==b},{x,y}, t];

ParametricPlot[Table[{x[t], y[t]}/.%/.{a->1/(13+m), b->1/(15+m)}, {m,0,20,7}], {t,-2,2},Evaluated->True]

Dinamikusabban

A=(({{-1.1, 0.9}, {-1.4, 0.3}}));
Manipulate[ParametricPlot[Evaluate[MatrixExp[A t,#]&/@pt],{t,0,10},PlotRange->5],{{pt,{{2,0},{0,1},{-3,0}}},Locator},SaveDefinitions->True]

Egyszerűbb változat, hogy megértsük:

A=(({{-1.1, 0.9}, {-1.4, 0.3}}));
Manipulate[ParametricPlot[MatrixExp[A t,pt],{t,0,10},PlotRange->5],{pt,{-2,0},{4,6},{1,1}},SaveDefinitions->True]

Ez a differenciálegyenlet jobb oldala.

A.{x,y}

VectorPlot[{-1.1x+0.9y,-1.4x+0.3y},{x,-1,1},{y,-2,2}]

StreamPlot[{-1.1x+0.9y,-1.4x+0.3y},{x,-1,1},{y,-2,2}]

Próbálgassuk az opciókat mindkét ábrázolásnál.

Nemlineáris egyenletek és rendszerek

Egzakt

Ezt akarjuk megoldani:

ex=(4(x^3)((y[x])^3)-2x y[x])+(3(x^4)((y[x])^2)-(x^2))y'[x]==0;

P[x_,p_]:=ex[[1,{1,2}]]/.{y[x]->p}
Q[x_,p_]:=(ex[[1,3]]/.{y[x]->p})/y'[x]

{P[x,p],Q[x,p]}

Keresztbevett parciálisok (+tartomány!!)

D[P[x,y],y]==D[Q[x,y],x]

cpP=ContourPlot[P[x,y]==0,{x,-4,4},{y,-1,1},ContourStyle->Directive[Red,Thick]]

Q[x,y]

cpQ=ContourPlot[-(x^2)+3 (x^4) (y^2)==0,{x,-4,4},{y,-1,1}]

Show[cpP,cpQ](*Tooltip!*)

A primitív függvény meghatározása

A megoldás, F[x,y]=állandó, szintvonalak

F[x_,y_]=Integrate[Q[x,y],y]+Integrate[P[x,y]-Integrate[D[Q[x,y], x], y],x]

Az (1,1) ponton átmenő megoldások:

Union[Solve[F[x,y]==F[1,1],y]]

Plot3D[Evaluate[F[x,y]],{x,-4,4},{y,-1,1}]

(*néhány szintvonal*)
ContourPlot[F[x,y],{x,-5,5},{y,-5,5},Contours->20,ContourShading->False]

ContourPlot[F[x,y],{x,-1.5`,1.5`},{y,-1.5`,1.5`},Contours->20,ContourShading->False,PlotPoints->50]

ContourPlot[F[x,y],{x,-1.5`,0},{y,0,1.5`},Contours->20,ContourShading->False,PlotPoints->50]

Lehetne még: Integráló tényező

Riccati

ric=DSolve[{y'[x]==(x^2)+((y[x])^2)},y[x],x][[1,1,2]];

Together[FunctionExpand[ric]]

Az elemi függvény fogalmának csak történeti jelentősége van. (HF: Program arra, h elemi-e egy fv?)

Nemlineáris rendszer

DSolve[ {y'[x]==Exp[z[x]]+1,z'[x]==y[x]-x},{y,z},x]//Quiet

Implicit egyenlet

DSolve[y'[x]+x ((y'[x])^2)==1,y,x]

DAE (Differenciál-algebrai egyenlet)

DSolve[{2 y'[x]+z'[x]==4y[x]+x,y[x]-z[x]==1},{y[x],z[x]},x]

Tyihonov, szinguláris perturbáció, kémiában XX. század legelején (Bodenstein-elv, a kvázistacionáris koncentráció hipotézise), fizikában?

Házi feladatok 1.

Amit az óra elején csináltunk, azt reprodukáljuk a ParametricNDSolve(Value) függvényekkel.

Az Escherichia coli baktérium 30 percenként osztódik. Egy példányát, amelynek tömege 2 (10^(-12)) g, beléhelyezzük egy igen nagy kémcsőbe/Petri-csészébe, és ellátjuk a szükséges táplálékkal. Mennyi idő múlva éri el a baktériumpopuláció össztömege a Földét (amely 5.9742 (10^27) g)?

Írjuk fel a sorosan kapcsolt ellenállásból, kondenzátorból és tekercsből álló RCL-körben folyó áram időbeli változását leíró másodrendű, lineáris, állandó együtthatós differenciálegyenletet, és tanulmányozzuk a megoldások viselkedését a paraméterek függvényében.

Más szavakkal: tekintsünk egy testet, amelyre közegellenállás és rugóerő hat, írjuk föl az időbeli változását leíró másodrendű, lineáris, állandó együtthatós differenciálegyenletet, és tanulmányozzuk a megoldások viselkedését a paraméterek függvényében.

Tanulmányozzuk az E+S<=>C->E+P  Michaelis—Menten-reakció kinetikai differenciálegyenletét: e'=-(Subscript[k, 1])e s+(Subscript[k, -1])c+(Subscript[k, 2])c
s'=-(Subscript[k, 1])e s+(Subscript[k, -1])c
c'=+(Subscript[k, 1])e s-(Subscript[k, -1])c-(Subscript[k, 2])c
p'=+(Subscript[k, 2])c.

A szokásos kezdeti feltételek: e(0)=(Subscript[e, 0])>0   s(0)=(Subscript[s, 0])>>(Subscript[e, 0])     c(0)=0     p(0)=0.

Házi feladatok 2.

Ezeket inkább majd az órán beszéljük meg, közösen, de szabad gondolkodni rajtuk.

Oldjuk meg (papíron, ceruzával) a

(x^2)y''[x] +4x y'[x]+7y[x]==0

Euler-egyenletet az ,,x=(e^t)" változó bevezetésével. Mit is jelent ez? ReplacementVariables.m: változócseréhez, de a diszkussziót nem végzi el.

Írjunk programot a célbalövésre a

{y''[x]==-x y[x],y[0]==2,y[4]==1/2}

feladat numerikus megoldására.

Írjunk programot az integráló tényező meghatározására.