Initialisierung

strichfarbe = RGBColor[0, 0.3, 0];
loesungsfarbe = 
        RGBColor[1, 0, 0];

dick = Thickness[0.008];
blau = RGBColor[0, 0, 0.8];
normalgroß := PointSize[ .02];

\(\(plotRichtungsFeld::"usage" = "plotRichtungsFeld[ausdruck,{x,x1,x2},{y,y1,y2},n,plotopts]

zeichnet das Richtungsfeld ausdruck. n ist die Anzahl der Punkte, in denen das Feld gezeichnet wird. Die Farbe des Feldes ist durch die globale Variable strichfarbe gegeben. Es können noch die normal Plotoptionen gesetzt werden.";\)
\)
Off[General::"spell1"]
\(plotRichtungsFeld[f_, {x_, xmin_, xmax_}, {y_, ymin_, ymax_}, 
        n_ /; n > 1, plotopts___] := 
      Module[{linie, pllinien, laenge, Δx, Δy}, 
        Off[Power::"infy"]; 
        Off[∞::"indet"]; 
Δx = 
          N[\(xmax - xmin\)\/\(n - 1\)]; 
Δy = N[\(ymax - ymin\)\/\(n - 1\)]; 
laenge = 
          Min[{Δx, Δy}]\ 0.8; 
        linie := If[f ≠ ComplexInfinity, 
            Line[{{x, 
                    y} - \(laenge\ {1, f}\)\/\(2\ \@\(f\^2 + 1\)\), \(laenge\ {1, f}\)\/\(2\ \@\(f\^2 + 1\)\) + {x, y}}], 
            Line[{{x, y - 1/2\ laenge}, {x, y + 1/2\ laenge}}], 
            Point[{x, y}]]; 
        pllinien = 
          Table[linie, {x, xmin, xmax, Δx}, {y, ymin, 
              ymax, Δy}]; On[Power::"infy"]; 
        On[∞::"indet"]; 
        Show[Graphics[{{strichfarbe}, Evaluate[pllinien]} // Flatten], 
          plotopts, Axes -> True]]\)
On[General::"spell1"]

Beispiel: Lösungsschar

Zeichnen des Richtungsfeldes der Differentialgleichung y' = (1/2) y + sin(3  x):

?plotRichtungsFeld

x1 = -2;
x2 = 2;
y1 = -2;
y2 = 2;
plfeld = 
        plotRichtungsFeld[(1/2) y + Sin[3  x], {x,  x1, x2}, {y, y1, 
            y2}, 
21, 
          AspectRatio -> Automatic];

Symbolisches Lösen der DGL

loes = 
      DSolve[(y^′)[x] == (1/2) y[x] + Sin[3  x], y[x], 
        x]

Erzeugung der Lösungsschar

schar = 
      Table[ y[x] /. loes /. C[1] -> k, {k, -2, 2,  .5}] // 
        Flatten

Zeichnen der Lösungsschar

\(\(plschar = 
        Plot[schar // Evaluate, {x, x1, x2}, 
	PlotRange -> {y1, y2}, 
	
          PlotStyle -> {{loesungsfarbe, dick}}, 
	
          AspectRatio -> Automatic];\)\)

Optische Prüfung der Lösung

Show[plschar, plfeld];

DGL y'=y mit y((Subscript[x, 0]))=(Subscript[y, 0])

Lösungen zum Anfangswertproblem:
y' =y, y(0)=(Subscript[y, 0])
Es sind eigentlich 2 Gleichungen zu lösen: 1. die DGL und 2. die Gleichung zum Anfangswertproblem. Beide Gleichungen werden in einer Liste zusammengefaßt:

x0 = 0;
y0 = 1;

x1 = -2;
x2 = 2;
y1 = -2;
y2 = 2;
\(\(plfeld = 
        plotRichtungsFeld[\(1\/2\) y + Sin[3  x], {x, x1, x2}, {y, y1, y2}, 
          15, 
		AspectRatio -> 
            Automatic, 
	\ \ Epilog -> {blau, normalgroß, 
              Point[{x0, y0}]}];\)\)

Lösen der DGL zum Anfangswertproblem:

loes = 
      DSolve[{(y^′)[x] == (1/2) y[x] + Sin[3  x], y[x0] == y0}, 
        y[x], x]

Zeichnung der Lösung

\(\(plloes = 
        Plot[\ y[x] /. loes, {x, x1, x2}, 
	PlotRange -> {y1, y2}, 
	
          PlotStyle -> {{dick, blau}}, 
	AspectRatio -> Automatic, 
          Epilog -> {blau, normalgroß, Point[\ {x0, y0}]}];\)\)

Show[plloes, plfeld];