Zum Mma - Kurs, Dr. W. Quapp, FS 2013 
Ableitungen und Differentialgleichungen

Defining Derivatives --- from Mma Help System  ---

You can define the derivative in Mathematica of a function f of one argument simply by an assignment like f'[x_]=fp[x].

This defines the derivative of f(x) to be fp(x). In this case, you could have used = instead of :=.

f'[x_]:=fp[x]

The rule for f'[x_] is used to evaluate this derivative.

D[f[x^2],x]

Differentiating again gives derivatives of fp.

D[%,x]

This defines a value for the derivative of g at the origin.

g'[0]=g0

The value for g'[0] is used.

D[g[x]^2,x]/.x->0

This defines the second derivative of g, with any argument.

g''[x_]=gpp[x]

The value defined for the second derivative is used.

D[g[x]^2,{x,2}]

DSolve --- Aufgaben aus Mma Hilfe

DSolve[y'[x]+y[x]==a Sin[x],y[x],x]

Include a boundary condition:

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

Get a "pure function" solution for y:

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

Substitute the solution into any expression:

FullSimplify[y''[x]+y[x]^2/.%]

{(1/4) a (E^(-2 x)) (a-2 (E^x) (-1+a Cos[x]-a Sin[x])+(E^(2 x)) (a+2 Cos[x]-2 Sin[x]-a Sin[2 x]))}

Diff.equ. of second order: no boundary condition gives two generated parameters:

DSolve[y''[x]+4y[x]==0,y,x]

One boundary condition:

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

Two boundary conditions (one value of the function, one of the derivative)

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

or(two values of the function)

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

Use differently named constants:

DSolve[y''[x]==y[x],y[x],x, GeneratedParameters->d]

Use subscripted constants:

DSolve[y''[x]==y[x],y[x],x,GeneratedParameters->(Subscript[c,#]&)]

Solve a logistic   equation:

DSolve[{y'[x] == y[x](1-y[x]/27),y[0]==a},y,x]

Plot the solution for different initial values:

Plot[Evaluate[y[x]/.%/.{{a->1/13},{a->1/2},{a-> 4}}],{x,0,18}]

Solve a linear pendulum equation:

DSolve[{y''[x]+y[x]==0,y[0]==1,y'[0]==1/3},y ,x]

Plot[y[x]/.%, {x,0,17}]

Displacement of a linear, damped pendulum:

DSolve[{y''[x]+3y'[x]+40 y[x]==0,y[0]==1,y'[0]==1/3},y,x]

Plot[y[x]/.%, {x, 0,4}, PlotRange -> All]

Find a power series solution when the exact solution is known:

DSolve[{y'[x]+Exp[x]y[x]==1,y[0]==3},y ,x]

Series[y[x]/.%[[1]],{x,0,7}]

Recover a function from its gradient vector:

DSolve[{D[f[x, y], x]==2x y^3+y Cos[x y], 
                D[f[x,y],y]==3x^2y^2+x Cos[x y]},f[x,y],{x,y}]

Solutions satisfy the differential equation and boundary conditions:

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

Simplify[{y''[x]-y[x]==0,y[0]==1,y'[0]==4}/.%]

Differential equation correspoding to Integrate

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

Integrate[Exp[-x^2],x]

Use  NDSolve to find a numerical solution:

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

Table[y[x]/.exactsol[[1]],{x,-2., 2}]

numsol=NDSolve[{y''[x] +y[x]==0,y[0]==1,y'[0]==0}, y,{x,-2,2}]

Table[y[x]/.numsol[[1]],{x,-2.,2}]

Compute an impulse response

DSolve[y'''[x]-5y''[x]+9y'[x]-5y[x]==DiracDelta''[x]+2DiracDelta'[x]+DiracDelta[x]&&y[-1]==0&&y'[-1]==0&&y''[-1]==0,y[x],x]//FullSimplify

The same computation using  InverseLaplaceTransform

InverseLaplaceTransform[((s^2+2s+1)/(s^3-5s^2+9s-5)),s,x]//FullSimplify

Results may contain symbolic integrals:

DSolve[y'[x]==f[x],y,x]

Inverse functions may be required to find the solution:

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

Generate a Cornu spiral:

DSolve[{x'[s]==Cos[t[s]], y'[s]==Sin[t[s]],t'[s] ==s,x[0]==0,y[0]==0,t[0]==0}, {x,y,t},s]

Die Loesung enthaelt die Fresnel Funktionen

fc=Plot[FresnelC[x],{x,-5,5}];
fs=Plot[FresnelS[x],{x,-5,5}];
Show[fc,fs]

ParametricPlot[Evaluate[{x[s], y[s]}/.%], {s,-10,10}]

(* ######################################################## *)

(*  Weitere Beispiele: DGl mit gewoehnlicher Funktionsdefinition *)

lsg=DSolve[y'[x]==-Cos[x]*y[x],y[x],x]

(* Versionen der Behandlung der Ausgabe *)
lsg[[1]]
lsg[[1,1]]
lsg[[1,1,2]]

zumbild=Table[lsg[[1,1,2]] /. C[1]->j,{j,-5,5}];

p1=Plot[Evaluate[zumbild],{x,0,4 Pi}]

(* Veranschaulichung des Vektorfeldes der Differentialgleichung *)
p2=VectorPlot[{1,-Cos[x]*y}, {x, 0, 4 Pi}, {y, -14, 14},VectorPoints->10,VectorScale->{0.05},VectorStyle->Arrowheads[0]]

Show[p1,p2]

Bilder  in einem Mma - Befehl kombiniert:

StreamPlot[{1,-Cos[x]*y}, {x, 0, 4 Pi}, {y, -14, 14}]

Welche Darstellung "besser" ist, 
haengt sicher auch vom persoenlichen Geschmack ab

(*  Es geht nicht: deshalb besser mit "pure function" arbeiten *)
y'[x] /. lsg

lsg2=DSolve[y'[x]==-Cos[x]*y[x],y,x]

y'[x] /. lsg2

(*  z.B. belibige Werte einsetzen  *)
y[t-2]/. lsg2

Da volle Familie von Kurven die Ebene ueberdeckt, kann jeder AW kann getroffen werden   z.B.

(* Hinweis zur Fehlerbehandlung = >>  Unset[y[5]]  *)

lsg3=DSolve[{y'[x]==-Cos[x]*y[x],y[5]==5},y,x]

Plot[y[x] /. lsg3 ,{x,0,4 Pi}]

Plot geht mit den {{ }} weil es automatisch Flatten anwendet .
Ohne AW in der DGl kann man auch eine entsprechende Kurve einzeln malen ,
wenn man C[1] richtig schaetzt..., 
oder wieder eine liste von Werteb einsetzen

Plot[y[x] /. lsg2 /. c[1]-> 2 ,{x,0,4 Pi}]

(* BSP: Mma findet Einhuellende bei einer nichtlinearen DGl nicht  *)

eqn= y'[x]^2 +1/2 * x * y'[x] - y[x]/2==0;

lsg4=DSolve[eqn,y,x]

druck=Table[y[x] /. lsg4 /. C[1]->j,{j,-10,10}];

Plot[druck,{x,-20,20},AxesOrigin->{0,-100}]

Hier raten, dass die  Enveloppe eine Parabel f ist (First[expr] gives the first element in expr,  
siehe auch: Part, Last, Rest, Take, Select)

f=a2 x^2 +a1  x + a0;
sys= First[eqn] /. {y[x]->f, y'[x]-> D[f,x]}

sol=Solve[CoefficientList[sys,x]==0 &&  a2 ≠ 0]

Diese spezielle Loesung  ist also y[x]=

f /. sol

StreamPlot ist hier etwas ueberfordert, obwohl man die Loesungen auch sehen kann, wenn man sie schon kennt:

StreamPlot[{{1,1/4(-x+Sqrt[x^2+8 y])},{1,1/4(-x-Sqrt[x^2+8 y])}} ,{x, -10, 10}, {y, -10,100}]

Das Aufloesen der DGl "mit Hand" bringt auch keine bessere Einsicht,
und auch keine Enveloppe:

lsgauf=DSolve[y'[x]==1/4(-x-Sqrt[x^2+8 y[x]]),y,x]

lsgaufaw=DSolve[{y'[x]==1/4(-x+Sqrt[x^2+8 y[x]]),y[0]==100},y,x]

(* Bsp: System von 2 Gleichungen: Konkurrierende Spezies, vergleiche die logistische Gleichung fuer eine Dimension *)

f[x_,y_]:= x (a -b1 x -b2 y)
g[x_,y_]:= y(c -d1 x -d2 y)
(* Bsp Belegung der Parameter *)
a=1;  b1=2;  b2=1;  c=1;  d1=0.75; d2=2; 
sys={f[x,y],g[x,y]}

StreamPlot[sys,{x,0,1},{y,0,1}]

Clear[x,y]
Solve[{a -b1 x -b2 y==0,c -d1 x -d2 y==0},{x,y}]

Es gibt einen LimesPunkt des Systems, den man direkt ausrechnen kann.

(* Bsp2 der Parameter *)
a=1;  b1=1;  b2=1;  c=2/3;  d1=0.75; d2=2; 
sys={f[x,y],g[x,y]}

StreamPlot[sys,{x,0,1},{y,0,1}]

Die y-Spezies stirbt aus, x bleibt uebrig, im Limes wird die Loesung
angenommen, die sich aus dem System bei y=0 ergibt:
Solve a logistic   equation:

restx=DSolve[x'[t] == a x[t]-b1 x[t]^2,x,t]

Limit[((E^t)/((E^t)+(E^(C[1])))),t->Infinity]

Bsp fuer eine konkrete Kurve mit NDSolve

(*  Clear[x,y,t,lsg] *)
a=1.;  b1=1.;  b2=1;  c=2./3;  d1=0.75; d2=2;
lsg=NDSolve[{x'[t]== x[t] (a -b1 x[t] -b2 y[t]),y'[t]== y[t](c -d1 x[t] -d2 y[t]),x[0]==0.1,y[0]==0.2},{x,y},{t,0,20}]

Plot[{lsg[[1,1,2]][t], lsg[[1,2,2]][t]}, {t,0,20},AxesLabel->{t,"x,y"}]

(* Anderes Bsp, get an InterpolatingFunction object approximating the solution of a differential equation: *)
ifun = First[u /. NDSolve[{u''[t] + u[t] == 0, u[0] == 0, u'[0] == 1}, u, {t,0,π}]]
(* and Plot the function and its derivative: *)
Plot[{ifun[t], ifun'[t]}, {t,0,π},AxesLabel->{t,"u,u'"}]

(*  Bsp DGl-System mit Randwerten *)

dgl=DSolve[{x'[t]==y[t],y'[t]==-x[t],x[0]==1,y'[1]==2},{x[t],y[t]},t]

lsg=dgl[[1]]  (* Beseitigung der Doppelklammer *)

(* Herausloesung beider Loesungsfunktionen *)

fx[t_]=x[t] /. lsg
fy[t_]=y[t] /. lsg

(* Vereinfachen *)
fx[t_]=ComplexExpand[fx[t]] // Simplify
fy[t_]=ComplexExpand[fy[t]] // Simplify

f1=Plot[fx[t],{t,0,2 Pi},AxesLabel->{t,"fx"}]
f2=Plot[fy[t],{t,0,2 Pi},AxesLabel->{t,"fy"}]
Show[f1,f2]
ParametricPlot[{fx[t],fy[t]},{t,0,2 Pi},AspectRatio->1,AxesLabel->{x,y}]

(* BSP: Michaelis-Menten DGl fuer emzymatische Reaktionen *)

mm=DSolve[{x'[t]==-V x[t]/(x[t]+Km),x[0]==1},x,t]

xsp[t]=x[t] /. mm /.  V-> 0.04 /. Km-> 0.02

Plot[0.02 ProductLog[50. (E^(50 -2  t))],{t,0,30},AxesLabel->{t,x}]

Hinweis: ProductLog ist die Loesung der Gleichung for w  inz==w(e^w)

Plot[ProductLog[x],{x,-1/E,1}]