13. Kapitel
ODE-Solver nach dem Dormand-Prince-Verfahren
Der ODE-Solver nach dem DORMAND-PRINCE-Verfahren gehört der RUNGE-KUTTA-Familie an und ist ebenfalls ein explizites Einschritt-Verfahren. Es hat dem klassischen RK4-Verfahren gegenüber aber einen Genauigkeitsvorteil, der kaum auf die Rechenleistung Rückwirkungen hat. Dieses Verfahren ist ein sog. eingebettetes Verfahren, welches mit einer automatisch funktionierenden dynamischen Schrittweitensteuerung ausgestattet ist. Was bedeutet "eingebettet"? Das wird deutlich, wenn wir uns das BUTCHER-Schema des Verfahrens ansehen.Abb. BUTCHER-Array des DORMAND-PRINCE-(45)-Verfahrens
()
Solange die Schranke ε nicht erreicht ist, werden die bisher erzielten Ergebnisse verworfen und eine neue Rechnung mit verkleinerter Schrittweite durchgeführt. Als zweckmäßig hat sich eine Halbierung der jeweils aktuellen Schrittweite erwiesen. Ebenso könnte die Vergleichsrechnung auch ergeben, dass die aktuelle Schrittweite kleiner als unbedingt notwendig ist, dann sollte die aktuelle Schrittweite verdoppelt werden. Allerdings gibt es für uns im Spieleumfeld die Einschränkung, dass die Schrittweite nicht größer als die durch die Bildwechselfrequenz vorgegebene Schrittweite sein sollte.
Eine automatische Schrittweitensteuerung ist überaus sinnvoll! Denn eine Verringerung der Schrittweite führt zu erhöhtem Rechenaufwand. Und warum soll der Aufwand erhöht werden, wenn der Gewinn an Genauigkeit das nicht rechtfertigt? In dem herunter ladbaren Beitrag Dormand-Prince-Method ist eine sehr schöne Erläuterung dieser automatisch ablaufenden Schrittweitensteuerung gegeben. Hier die Empfehlung für die Schrittweitensteuerung:
- ist s < 1, ist die Genauigkeit nicht ausreichend und die Schrittweite wird verringert,
- ist s < 2, genügt die Genauigkeit den Anforderungen und die Schrittweite bleibt unverändert,
- ist s > 2, die Genauigkeit übertrifft die Anforderungen und die Schrittweite wird erhöht.
Die Anwendung des DORMAND-PRINCE-Verfahrens auf Differentialgleichungen 2. Ordnung erfolgt genau so, wie wir das beim klassischen RUNGE-KUTTA- Verfahren besprochen haben. Die Implementierung und Anwendung des DP45-Verfahrens () ist ähnlich dem des RUNGE-KUTTA(4)-Verfahrens. Eine Besonderheit tritt jedoch auf: im Construktor sind die Genauigkeitsschranke ε und die Anzahl der maximalen Rückweisungen N anzugeben. Letzteres ist wichtig, um endlos-Schleifen zu vermeiden, wenn die geforderte Genauigkeit nicht erreichbar ist.
Abb. Anwendung des DORMAND-PRINCE-(45)-Verfahrens
Das Beispiel zeigt die Anwendung des DP45-Verfahrens auf das schon bekannte hängend befestigte Feder-Masse-System. Resonanzfrequenz ω0 und Däpfung δ können wieder per Schieberegler frei gewählt werde. Von Interesse sind hier insbesondere die Parametertreue, d.h. wie genau stimmt die tatsächlich gemessene Schwingungsfrequenz mit der vorgegebenen überein und die Änderung der im System befindlichen Energie. Beide Werte sind bei δ = 0 zu messen!
Ergebnisgiskussion: Schon beim ersten Blick auf die Fehlerausschriften Δf und ΔW fallen die im Vergleich zu den bisher besprochenen Verfahren um mehrere 10er-Potenzen besseren Werte auf. Aber bei nicht vorhandenem Reibungseinfluss im Feder-Masse-System ist zu bemerken, dass - das negative Vorzeichen beim ΔW zeigt es an - ein geringer Energieverlust im System in Erscheinung tritt. Der sich wegen seines äußerst geringen Ausmaßes natürlich erst nach langer Beobachtungsdauer wirklich bemerkbar macht. In der Spielewelt ist dieser Energieverlust natürlich völlig ohne Bedeutung, da unsere Systeme ja generell mit Reibungseinflüssen zu tun haben.
Wohingegen die Parametertreue uneingeschränkt sehr gut ist. Beide Fehlermaße steigen proportional mit der eingestellten Eigenfrequenz, was gleichbedeutend mit einer steiferen Feder ist.
Der ODE-Solver nach DORMAND-PRINCE (45) ist der genaueste Algorithmus
zur Lösung gewöhnlicher Differentialgleichungen 2. Ordnung! Dies betrifft sowohl die
Parametertreue als auch die Stabilität der Lösung.
Jetzt die Nagelprobe. Wie gut sind die Verfahren der RUNGE-KUTTA-Familie im Vergleich zu den vorher besprochenen Verfahren wirklich? Dazu bemühen wir noch einmal das kosmische Szenarium: die Planetenbewegung um die Sonne. Zum Vergleich stehen das velocity Verlet-, das klassische 4-stufige RUNGE-KUTTA-Verfahren und das DORMAND-PRINCE-45-Verfahren. Die Bahnparameter des Planeten (oder Kometen) sind im Vergleich zum vorherigen Experiment verschärft worden, um die Unterschiede der Verfahren deutlicher machen zu können.
Das Beispiel zeigt die Anwendung des DP45-Verfahrens auf die schon bekannte Kometenbahn-Problematik. Hier werden die drei aussichtsreichsten Kandidaten für stabile und parametertreue ODE-Solver gegenüber gestellt. Die Stabilität der Lösungen zeigt sich in den mehr oder weniger geschlossenen Bahnkurven.
Ergebnisdisskusion: Das kosmische Projekt zeigt insbesondere bei großen Schrittweiten deutlich die Überlegenheit der Verfahren höherer Ordnung. Die extremeren Bahnparameter bringen das velocity Verlet-Verfahren sehr schnell an seine Grenzen. Das RUNGE-KUTTA (RK4)-Verfahren ist sichtbar besser, zeigt aber über längere Zeiten eine Zunahme der Gesamtenergie, was zu einer nichtschließenden Bahn führt. Erst das DORMAND-PRINCE (DP45)-Verfahren kann bei geringstem Energieverlust über lange Zeiten den Eindruck einer geschlossenen Bahn erwecken. Wegen seiner hervorragenden Eigenschaften ist das DORMAND-PRINCE-Verfahren unter der Bezeichnung DOPRI oder RKDP als Standardverfahren als ODE-Solver weit verbreitet. U.a. in solchen Programmsystemen wie MATLAB (hier als ode45 aufrufbar) bzw. Simulink.