Einführung in Mathematica XXI

Differenzialgleichungen

© Jürgen Schnack, 2016/07/12

Problem

Differenzialgleichungen (neue Rechtschreibung?) sind ein sehr weites Feld. Viele Probleme sind dieser Art: Bewegungsgleichungen, Feldgleichungen, Schrödingergleichungen, ...
Analytische Lösungen sind rar, aber für einige archetypische Fälle existieren sie.

Mathematica enthält eine schier unglaubliche Anzahl von analytischen Lösungen, die man mit 
DSolve
suchen kann.

Wenn das nicht weiterhilft, dann kann Mathematica mittels
NDSolve 
numerische Lösungen erzeugen.

Einfaches Beispiel

DSolve[{y'[x]==ay[x]},y[x],x]

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

Sol1=DSolve[{y'[x]==ay[x],y[0]==1},y,x]

a=1.5;
Plot[y[x]/.Sol1,{x,0,2},
PlotStyle->{{Thickness[0.01],Red}},
AxesLabel->{"x","y"},BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Schwingungsgleichung

DSolve[{u''[x]==-(k^2)u[x]},u,x]

DSolve[{u''[x]==-(k^2)u[x],u[0]==0},u,x]

Harmonischer Oszillator

DSolve[{x''[t]==-(ω^2)x[t]},x,t]

Sol2=DSolve[{x''[t]==-(ω^2)x[t],x[0]==-1,x'[0]==0},x,t]

ω=27;
Plot[x[t]/.Sol2,{t,0,7},
PlotStyle->{{Thickness[0.01],Red}},
AxesLabel->{"x","y"},
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Harmonischer Oszillator mit Dämpfung

ω=4.0;
γ=1.0;

Sol3=DSolve[{x''[t]+γ x'[t]+(ω^2)x[t]==0,x[0]==-1,x'[0]==0},x,t]

Plot[x[t]/.Sol3,{t,0,7},
PlotStyle->{{Thickness[0.01],Red}},
AxesLabel->{"x","y"},
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Getriebener Harmonischer Oszillator mit Dämpfung I

a=.
ω=4.0;
γ=1.0;
a[t_]=10 Sin[10 t];

Sol4=DSolve[{x''[t]+γ x'[t]+(ω^2)x[t]==a[t],x[0]==-1,x'[0]==0},x,t]

Plot[x[t]/.Sol4,{t,0,20},PlotRange->{-0.71,0.71},
PlotStyle->{{Thickness[0.01],Red}},
AxesLabel->{"x","y"},
BaseStyle->{FontFamily->"Helvetica",FontSize->18},
PlotPoints->10000]

Getriebener Harmonischer Oszillator mit Dämpfung II

ω=4.0;
γ=1.0;
a[t_]=10 Sin[10 t];

Sol4=DSolve[{x''[t]+γ x'[t]+(ω^2)x[t]==a[t],x[0]==-1,x'[0]==0},x,t];

Plot[{x[t]/.Sol4,a[t]/80},{t,10,20},PlotRange->{-0.21,0.21},
PlotStyle->{{Thickness[0.01],Red},{Thickness[0.005],Blue}},
AxesLabel->{"x","y"},
BaseStyle->{FontFamily->"Helvetica",FontSize->18},
PlotPoints->10000]

Diskussion

Beispiel für gekoppelte Differentialgleichungen,
gekoppelte Oszillatoren

ω1=1;
ω2=2;
ω12=1.415926;
V[x1_,x2_]=(1/2)*((ω1)^2)*(((x1[t]+1))^2)+(1/2)*((ω2)^2)*(((x2[t]-1))^2)+(1/2)*((ω12)^2)*(((x1[t]-x2[t]))^2);
T[p1_,p2_]=(1/2)*((p1[t])^2)+(1/2)*((p2[t])^2);
H[p1_,p2_,x1_,x2_]=T[p1,p2]+V[x1,x2];

EOM={p1'[t]==-D[H[p1,p2,x1,x2],x1[t]],
p2'[t]==-D[H[p1,p2,x1,x2],x2[t]],
x1'[t]==D[H[p1,p2,x1,x2],p1[t]],
x2'[t]==D[H[p1,p2,x1,x2],p2[t]]}

AB={p1[0]==0,p2[0]==0,x1[0]==-2,x2[0]==1};

Sol10=DSolve[Join[EOM,AB],{p1,p2,x1,x2}, t];

Plot[{x1[t]/.Sol10,x2[t]/.Sol10}, {t,0,10},PlotStyle->{{Red,Thick},{Blue,Thick}},
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Plot[{p1[t]/.Sol10,p2[t]/.Sol10}, {t,0,10},PlotStyle->{{Red,Thick},{Blue,Thick}},
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

ParametricPlot[{x1[t], p1[t]}/.Sol10, {t,0,10},PlotStyle->{{Red,Thick},{Blue,Thick}},AspectRatio->1.0,
BaseStyle->{FontFamily->"Helvetica",FontSize->18}]

Ausgabe

Ausgabe=Table[{0.1*i,p1[0.1*i]/.Sol10,p2[0.1*i]/.Sol10,
x1[0.1*i]/.Sol10,x2[0.1*i]/.Sol10},{i,0,101}];
TableForm[Chop[Ausgabe]];
Export["Vorlesung-21.dat",TableForm[Chop[Ausgabe]],"Table"]

... und Schluss.