Mathematik: Numerik: Numerik gewöhnlicher Differentialgleichungen

Aus Wikibooks

Wechseln zu: Navigation, Suche

Es existieren zahlreiche Verfahren zur numerischen Lösung gewöhnlicher Differentialgleichungen. Diese können in

  • Einschrittverfahren und
  • Mehrschrittverfahren

unterschieden werden. Ein Einschrittverfahren verwendet immer nur die Information aus dem aktuellen Zeitschritt. Mehrschrittverfahren greifen dagegen auch auf Informationen vergangener Zeitschritte zurück. Voraussetzung für die meisten Verfahren ist, dass eine gewöhnliche Differentialgleichung 1. Ordnung der Form

\frac{\mathrm{d}x}{\mathrm{d}t} = f(t, x), \quad x(t_0) = \xi

vorliegt.

[Bearbeiten] Euler-Verfahren

Das Euler-Verfahren (oder Euler'sches Polygonzugverfahren) ist das Einfachste der Einschrittverfahren. Um es herzuleiten wird der Differentialquotient durch einen Vorwärtsdifferenzenquotienten approximiert, die kontinuierlichen Variablen t und x werden durch zeitdiskrete Variablen tk und xk ersetzt:

\frac{x_{k+1} - x_k}{h} = f(t_k, x_k)

Durch Auflösen dieser Gleichung nach xk + 1 erhalten wir die Iterationsvorschrift der Euler-Verfahrens:

x_{k+1} = x_k + h \cdot f(t_k, x_k)

h wird Schrittweite genannt und der neue Zeitpunkt tk + 1 ergibt sich daraus zu

tk + 1 = tk + h

[Bearbeiten] Beispiel

numerische und exakte Lösungen im Vergleich
Iterationsschritt k Zeit tk num. Lösung xk exakte Lösung
0 1 1
1 0,1 0,9 0,9048
2 0,2 0,81 0,8187
3 0,3 0,729 0,7408
4 0,4 0,6561 0,6703
5 0,5 0,5905 0,6065
6 0,6 0,5314 0,5488
7 0,7 0,4783 0,4966
8 0,8 0,4305 0,4493
9 0,9 0,3874 0,4066
10 1,0 0,3487 0,3679

Wir betrachten die Differentialgleichung

\frac{\mathrm{d}x}{\mathrm{d}t} = - x

mit der Anfangsbedingung x(0) = 1. Die exakte Lösung dieser Gleichung lautet übrigens x(t) = exp( − x). Die Iterationsvorschrift lautet dann für die gegebene Gleichung:

x_{k+1} = x_k - h \cdot x_k = (1-h) x_k

Als Schrittweite wählen wir h = 0,1. Mit x0 = 1 aus der Anfangsbedingung können wir nun einen ersten Iterationsschritt durchführen:

x_1 = 0{,}9 \cdot x_0 = 0{,}9 \cdot 1 = 0{,}9

Verwenden wir nun das so erhaltene x1, so können wir gleich den nächsten Iterationsschritt durchführen, u.s.w.

\begin{align}
x_2 &= 0{,}9 \cdot x_1 = 0{,}9 \cdot 0{,}9 = 0{,}81 \\
x_3 &= 0{,}9 \cdot x_2 = 0{,}9 \cdot 0{,}81 = 0{,}729 \\
x_4 &= ...
\end{align}

In der Tabelle rechts sind die numerischen Lösungen für die ersten 10 Iterationsschritte dargestellt. Zum Vergleich ist dort auch jeweils die exakte Lösung zum jeweiligen Zeitpunkt gegeben. Um die numerischen Ergebnisse weiter zu verbessern kann die Schrittweite verringert werden. Allerdings steigt damit natürlich auch der Rechenaufwand weiter an.

Persönliche Werkzeuge