Euler-Integration
Differentialgleichungen – Kapitel 11
M. Ladecký, L. Pastewka
IMTEK, Universität Freiburg
Lernziele
Die Studierenden sollen…
- … das explizite Euler-Verfahren als einfachstes numerisches Integrationsverfahren beschreiben können.
- … die Herleitung des Euler-Verfahrens aus der Annahme konstanter Steigung erklären können.
- … die Energiedrift des Euler-Verfahrens im Phasenraum erklären können.
- … das Euler-Verfahren auf skalare und vektorwertige Differentialgleichungen anwenden können.
- … das Leapfrog-Verfahren zur verbesserten Energieerhaltung anwenden können.
Motivation
- Nur ein kleiner Teil von Differentialgleichungen ist analytisch lösbar
- In der Praxis: numerischer Zugang erforderlich
- Einfachstes Verfahren: explizites Euler-Verfahren (Leonhard Euler)
- Zentrale Idee: Die DGL gibt die Steigung der Lösungskurve an → Lösung näherungsweise entlang der Tangente fortsetzen
Heuristische Herleitung
Anfangswertproblem: \[
\frac{\mathrm{d}y}{\mathrm{d}t} = g(y, t), \quad y(t_0) = y_0
\]
- Steigung der Lösungskurve am Punkt \((t_i, y_i)\): \(g(y_i, t_i)\)
- Annahme: Steigung bleibt über kleinen Zeitschritt \(\Delta t\) konstant
- Lineare Extrapolation zum nächsten Zeitpunkt \(t_{i+1} = t_i + \Delta t\):
\[
y_{i+1} = y_i + \Delta t \cdot g(y_i, t_i)
\]
Das explizite Euler-Verfahren
\[
y_{i+1} = y_i + \Delta t \cdot g(y_i, t_i)
\]
- “Explizit”: \(y_{i+1}\) folgt direkt aus den bekannten Größen \(y_i\), \(t_i\)
- Geometrische Interpretation: Schritt entlang der Tangente an die Lösungskurve
- Wahre Lösungskurve ist gekrümmt → Tangente weicht ab → Fehler
Das implizite Euler-Verfahren
Alternative: Steigung am Ende des Intervalls verwenden: \[
y_{i+1} = y_i + \Delta t \cdot g(y_{i+1}, t_{i+1})
\]
- Rechte Seite hängt von der unbekannten Größe \(y_{i+1}\) ab → in jedem Schritt eine (i. A. nichtlineare) Gleichung lösen
- Dafür: unbedingt stabil — auch bei großen Zeitschritten
- Für steife DGLs (sehr unterschiedliche Zeitskalen) oft die einzige praktikable Wahl
Skalares Beispiel: Relaxationsgleichung
\[
\frac{\mathrm{d}y}{\mathrm{d}t} = -\frac{y}{\tau}, \quad y(0) = y_0
\qquad\Rightarrow\qquad
y(t) = y_0 \exp\left(-\frac{t}{\tau}\right)
\]
Euler-Verfahren liefert die Rekursion: \[
y_{i+1} = \left(1 - \frac{\Delta t}{\tau}\right) y_i
\quad\Rightarrow\quad
y_n = \left(1 - \frac{\Delta t}{\tau}\right)^n y_0
\]
- Für \(\Delta t \ll \tau\): \((1 - \Delta t/\tau)^n \approx \exp(-t_n/\tau)\) — exakte Lösung
- Für größere \(\Delta t\): zunehmende Abweichung
Euler-Verfahren: Konvergenz
- Fehler skaliert linear mit \(\Delta t\) → Verfahren erster Ordnung
Vektorwertiges Problem: Feder-Masse-System
Bewegungsgleichung (2. Ordnung): \[
m \frac{\mathrm{d}^2 x}{\mathrm{d}t^2} = -k x
\]
Umschreiben in System 1. Ordnung mit \(v = \mathrm{d}x/\mathrm{d}t\), \(\omega = \sqrt{k/m}\): \[
\frac{\mathrm{d}\mathbf{y}}{\mathrm{d}t} = \mathbf{g}(\mathbf{y}, t), \quad
\mathbf{y} = \begin{pmatrix} x \\ v \end{pmatrix}, \quad
\mathbf{g}(\mathbf{y}, t) = \begin{pmatrix} v \\ -\omega^2 x \end{pmatrix}
\]
Euler-Verfahren für Systeme
Gleiche Struktur wie im skalaren Fall: \[
\mathbf{y}_{i+1} = \mathbf{y}_i + \Delta t \cdot \mathbf{g}(\mathbf{y}_i, t_i)
\]
Konkret für das Feder-Masse-System: \[
x_{i+1} = x_i + \Delta t \cdot v_i, \qquad
v_{i+1} = v_i - \Delta t \cdot \omega^2 x_i
\]
- Exakte Lösung: geschlossene Kreisbahn im Phasenraum \((x, v)\)
- Wie verhält sich das Euler-Verfahren?
Euler-Verfahren im Phasenraum
- Euler-Verfahren spiralt nach außen: dem System wird künstlich Energie zugeführt
- Effekt umso stärker, je größer \(\Delta t\) — numerische Energiedrift
Energiedrift: quantitative Analyse
Totale Energie: \[
E = \frac{1}{2} m v^2 + \frac{1}{2} k x^2
\]
Einsetzen der Euler-Formeln liefert nach einem Zeitschritt: \[
E_{i+1} = E_i \left( 1 + \omega^2 (\Delta t)^2 \right)
\quad\Rightarrow\quad
E_n = E_0 \left( 1 + \omega^2 (\Delta t)^2 \right)^n
\]
- Für kleine \(\Delta t\): \(E_n \approx E_0 \exp(\omega^2 \Delta t \cdot t)\)
- Die Energie wächst exponentiell mit der Zeit!
Energiedrift: numerische Bestätigung
- Wachstumsrate skaliert linear mit \(\Delta t\) — wie theoretisch vorhergesagt
Das Leapfrog-Verfahren
- Auch Störmer-Verlet-Verfahren genannt
- Symplektisches Integrationsverfahren: deutlich bessere Energieerhaltung
- Prädiktor-Korrektor-Struktur: symmetrische Kombination zweier halber Euler-Schritte
- Drei Teilschritte:
- Prädiktor: halber Geschwindigkeitsschritt
- voller Positionsschritt
- Korrektor: halber Geschwindigkeitsschritt
Leapfrog: die drei Teilschritte
Prädiktor (halber Geschwindigkeitsschritt mit \(x_i\)): \[
v_{i+1/2} = v_i - \frac{\Delta t}{2} \omega^2 x_i
\]
Positionsschritt (mit Zwischengeschwindigkeit): \[
x_{i+1} = x_i + \Delta t \cdot v_{i+1/2}
\]
Korrektor (halber Geschwindigkeitsschritt mit \(x_{i+1}\)): \[
v_{i+1} = v_{i+1/2} - \frac{\Delta t}{2} \omega^2 x_{i+1}
\]
Leapfrog: kompakte Darstellung
Elimination der Zwischengeschwindigkeit \(v_{i+1/2}\): \[
v_{i+1} = v_i - \frac{\Delta t}{2} \omega^2 (x_i + x_{i+1})
\]
- Mittelwert der Beschleunigungen am Anfang und Ende des Intervalls
- Entspricht der Trapezregel für numerische Integration
- Symmetrische Struktur → Zeitumkehrsymmetrie des Verfahrens
Symplektizität des Leapfrog-Verfahrens
Leapfrog-Schritt in Matrixform mit \(\lambda = (\omega \Delta t)^2\): \[
\begin{pmatrix} x_{i+1} \\ v_{i+1} \end{pmatrix} = \mathbf{M} \begin{pmatrix} x_i \\ v_i \end{pmatrix},
\quad
\mathbf{M} = \begin{pmatrix} 1 - \frac{\lambda}{2} & \Delta t \\ -\omega^2 \Delta t \left(1 - \frac{\lambda}{4}\right) & 1 - \frac{\lambda}{2} \end{pmatrix}
\]
\[
\det(\mathbf{M}) = \left(1 - \frac{\lambda}{2}\right)^2 + \lambda \left(1 - \frac{\lambda}{4}\right) = 1
\]
- \(\det(\mathbf{M}) = 1\) → flächenerhaltend im Phasenraum \((x, v)\)
- In 2D äquivalent zur Symplektizität → Langzeitstabilität
- Energie oszilliert um den wahren Wert statt systematisch zu driften
Euler vs. Leapfrog im Langzeitverhalten
- Euler: Energie nach \(t=100\) um mehr als das Hundertfache aufgebläht
- Leapfrog: Energie oszilliert leicht, bleibt aber im Mittel auf dem korrekten Niveau
Zusammenfassung
- Explizites Euler-Verfahren: \(y_{i+1} = y_i + \Delta t \cdot g(y_i, t_i)\) — einfachstes Verfahren, basiert auf konstanter Steigung über \(\Delta t\)
- Erste Ordnung: Fehler skaliert linear mit dem Zeitschritt; für dissipative Systeme bei kleinem \(\Delta t\) akzeptabel
- Energiedrift: Bei konservativen Systemen wächst die Energie exponentiell — Spirale nach außen im Phasenraum
- Leapfrog-Verfahren: symplektisch (\(\det \mathbf{M} = 1\)), erhält die Phasenraumstruktur, keine systematische Energiedrift
- Für Langzeitintegration konservativer Systeme: symplektische Verfahren statt Euler verwenden