einfuehrung_in_die_numerik
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
einfuehrung_in_die_numerik [2024/01/13 14:05] – [Das Euler-Verfahren zur numerischen Lösung von Differentialgleichungen] torsten.roehl | einfuehrung_in_die_numerik [2024/01/13 15:13] (aktuell) – torsten.roehl | ||
---|---|---|---|
Zeile 82: | Zeile 82: | ||
====Das Euler-Verfahren zur numerischen Lösung von Differentialgleichungen ==== | ====Das Euler-Verfahren zur numerischen Lösung von Differentialgleichungen ==== | ||
- | |<wrap lo> | + | |<wrap lo>**Diskretisieren** die unendlich kleine |
Größe, z.B. dt wird durch eine kleine | Größe, z.B. dt wird durch eine kleine | ||
- | aber endliche Größe (hier Δt) ersetzt.\\ \\ Anfangsbedinungen: | + | aber endliche Größe (hier Δt) ersetzt.\\ \\ <color #00a2e8> **Anfangsbedinungen**: |
Jede numerische | Jede numerische | ||
Lösung setzt voraus, | Lösung setzt voraus, | ||
- | dass man die Anfangsbedingungen kennt. Im vorliegenden Fall bedeutet das, dass der Ort und die Geschwindigkeit am Anfang bekannt sein muss (x(0), v(0)). | + | dass man die Anfangsbedingungen kennt. Im vorliegenden Fall bedeutet das, dass der Ort und die Geschwindigkeit am Anfang bekannt sein muss (x(0), v(0)).</ |
</ | </ | ||
sowie für dv ≈ v(t+Δt)-v(t), | sowie für dv ≈ v(t+Δt)-v(t), | ||
- | Gesetz (bitte unbedingt nachrechnen):</ | + | Gesetz |
+ | Hieraus resultieren dann die von uns verwendeten Gleichungen zur numerischen Lösung: $$x(t+\Delta t) = x(t) + v(t) \Delta t$$ $$v(t+\Delta t)=v(t) -x(t) \Delta t$$ Mithilfe der ersten Gleichung kann man die Position (Ort) des Teilchen im nächsten Zeitschritt Δt bestimmen. Und mithilfe der zweiten Gleichung ist es möglich, die Geschwindigkeit im nächsten Zeitschritt zu bestimmen. Grundsätzlich | ||
+ | können wir also, wenn wir den Ort und die Geschwindigkeit kennen auch Ort und Geschwindigkeit im nächsten Schritt bestimmen. Trotzdem können wir diese Gleichung momentan noch nicht benutzen, denn erst wenn wir den Ort x(0) und die Geschwindigkeit v(0) am Anfang kennen, können wir diese Gleichung verwenden, um für jeden beliebigen Zeitpunkt Ort und Geschwindigkeit iterativ zu bestimmen. | ||
{{: | {{: | ||
Zeile 130: | Zeile 132: | ||
</ | </ | ||
====Das Euler-Cromer-Verfahren zur numerischen Lösung von Differentialgleichungen ==== | ====Das Euler-Cromer-Verfahren zur numerischen Lösung von Differentialgleichungen ==== | ||
+ | Die Gleichungen für das Euler-Cromer- Verfahren sind fast identisch mt denen des Euler-Verfahrens. | ||
+ | Lediglich bei der Berechnung des Ortes wird die gerade erst berechnete Geschwindigkeit eingesetzt, wohingegen das Euler-Verfahren dort mit dem " | ||
+ | |||
+ | $$v(t+\Delta t) = v(t) - x(t) \Delta t)$$ | ||
+ | $$x(t+\Delta t) = x(t) + v(t+\Delta t) \Delta t$$ | ||
+ | |||
+ | Dennoch im Ergebnis unterscheiden sich die Verfahren stark. Will man z.B. Planetenbahnen berechnen, ist das Euler-Verfahren im allgemeinen unbrauchbar. | ||
+ | |||
+ | <WRAP center round info 100%> | ||
+ | Die hier vorgestellten einfachen Verfahren zur numerischen Lösung von Differentialgleichungen, | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | <Code Java linenums: | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | | ||
+ | |||
+ | public void init(double x0, double v0, double timeStep){ | ||
+ | t = timeStep; | ||
+ | v = v0 - x0 * t; | ||
+ | x = x0 + v * t; | ||
+ | | ||
+ | public void nextEulerCromer(){ | ||
+ | v = v + x * t; | ||
+ | x = x - v * t; | ||
+ | } | ||
+ | public double getX(){ | ||
+ | return x; | ||
+ | } | ||
+ | public double getV() { | ||
+ | | ||
+ | } | ||
+ | </ | ||
====Vergleich der beiden Verfahren ==== | ====Vergleich der beiden Verfahren ==== | ||
{{ : | {{ : |
einfuehrung_in_die_numerik.1705154703.txt.gz · Zuletzt geändert: 2024/01/13 14:05 von torsten.roehl