Ich möchte nur wissen, ob die numerische Methode nach Dormand-Prince oder die numerische Methode nach Cash-Karp genauer ist.
Ich möchte nur wissen, ob die numerische Methode nach Dormand-Prince oder die numerische Methode nach Cash-Karp genauer ist.
Antworten:
Da ich gerade viele davon in einer Software, DifferentialEquations.jl , optimiert habe , habe ich mich entschlossen, nur einen Vergleich der wichtigsten Order 4/5-Methoden anzustellen. Die Fehlberg-Methode wurde weggelassen, da allgemein bekannt ist, dass sie weniger effizient ist als die DP5-Methode.
Die Dormand-Prince-Methode wurde entwickelt, um als 4/5-Paar mit lokaler Extrapolationsverwendung genau zu sein (dh Schritt mit dem Paar der Ordnung 5). Dies liegt daran, dass sie nahe am optimalen (dh minimalen) prinzipiellen Kürzungsfehlerkoeffizienten (unter) liegt die Einschränkung, auch die minimale Anzahl von Schritten zu haben, um Ordnung 5 zu erreichen). Es hat eine Interpolation der Ordnung 4, die kostenlos ist, aber zusätzliche Schritte für eine Interpolation der Ordnung 5 benötigt.
Die Cash-Karp-Methode wurde entwickelt, um verschiedene Einschränkungen zu erfüllen, nämlich um nicht reibungslose Probleme besser zu lösen. Sie wählten das , den Prozentsatz des Zeitschritts im i- ten Schritt (dh t + c i Δ t ist die Zeit, zu der der i- te Schritt berechnet wird), um so einheitlich wie möglich zu sein und dennoch die Ordnung 5 zu erreichen. Dann ist es so Es wurde auch abgeleitet, dass Methoden der 1., 2., 3. und 4. Ordnung mit dieser Einheitlichkeit des c i eingebettet wurden. Sie sind so beabstandet, dass Sie herausfinden können, wo ein steifer Teil beginnt und welcher Unterschied groß ist. Beachten Sie außerdem, dass eine Methode höherer Ordnung umso schlechter ist, je steifer die Gleichung ist (da sie Grenzen für höhere Ableitungen benötigt). Daher entwickeln sie eine Strategie, die die 5 eingebetteten Methoden verwendet, um "frühzeitig zu beenden": Wenn Sie also Steifheit feststellen, halten Sie im Stadium um die Anzahl der Funktionsaufrufe zu verringern und Zeit zu sparen. Letztendlich wurde dieses "Paar" unter Berücksichtigung vieler anderer Einschränkungen entwickelt, und es gibt keinen Grund zu der Annahme, dass es "genauer" sein würde, zumindest als 4/5-Paar. Wenn Sie all diese anderen Maschinen hinzufügen, ist dies bei (halb-) steifen Problemen genauer (in diesem Fall möchten Sie jedoch möglicherweise eine andere Methode wie die W-Rosenbrock-Methode verwenden). Dies ist ein Grund, warum dieses Paar gegenüber dem DP5-Paar nicht zum Standard geworden ist, aber dennoch nützlich sein kann (vielleicht wäre es gut für eine Hybridmethode, die bei Steifheit auf einen steifen Löser umschaltet?).
Um die Antwort abzurunden, diskutieren wir das Bogacki & Shampine-Paar, das im Kommentar erwähnt wurde. Die BS5-Methode löscht die Einschränkung "Verwenden der kleinsten Funktionsaufrufe" (sie verwendet 8 anstelle von 6), um zwei Dinge zu tun:
Erhalten Sie wirklich niedrige prinzipielle Kürzungsfehlerkoeffizienten.
Erzeugen Sie eine Interpolation der Ordnung 5 mit niedrigeren Fehlerkoeffizienten.
Diese Koeffizienten sind so niedrig, dass bei vielen Problemen mit Toleranzen, die Benutzer wahrscheinlich verwenden, die 6. Ordnung gemessen wird. Ihre Arbeit zeigt, dass dies für billige Funktionsaufrufe effizienter sein kann als DP5, und zwar um ungefähr den gleichen Betrag, den DP5 über RKF5 (Fehlberg-Methode) lag.
Sie könnten zwei und zwei zusammenfügen und sehen: Moment mal, Shampine ist dieselbe Person, die die MATLAB ODE-Suite entwickelt hat. Dies geschah, nachdem das BS5-Paar veröffentlicht wurde. Warum verwendet MATLAB ode45
das BS5-Paar nicht? Ein Grund ist, dass es meistens gemacht wurde, bevor das BS5-Paar relaesed wurde. Der andere Grund ist, dass die ode45
Funktion entwickelt wurde, um die Zeit zu minimieren. Während das BS5-Paar effizienter ist (dh eine geringere Genauigkeit erhält), ist der Zweck vonode45
ist es, einen Fehler zu haben, der gut genug ist, um eine ausreichend gute Handlung zu erstellen. Dies bedeutet, dass zur Bewältigung der großen Schritte zwischen jedem Schritt zwei zusätzliche interpolierte Lösungen erzeugt werden. Für die DP5-Methode gibt es eine Interpolation "freier" Ordnung 4, und dies ist viel schneller als bei Verwendung von BS5. Da es auch bei moderaten Toleranzen "genau genug" ist, wird diese Methode als Standard festgelegt, da sie beim interaktiven Rechnen eine bessere Standardbenutzererfahrung bietet als BS5 (diese Auswahl war also kontextspezifisch).
Hier ist eine, von der weniger Leute wissen. Es ist in diesem Papier abgeleitet . Es wird unter Verwendung weniger Annahmen als die DP5-Methode abgeleitet und versucht, ein Paar mit niedrigeren prinzipiellen Kürzungsfehlerkoeffizienten zu erhalten. In seinen Tests heißt es, dass es dies erreicht. Es hat auch eine Interpolation freier Ordnung 4 wie die DP5-Methode.
Ich habe das numerische Paket DifferentialEquations.jl geschrieben , um eine ziemlich umfassende Reihe von Lösern für Julia zu sein. Auf dem Kriegspfad habe ich über 100 Runge-Kutta-Methoden implementiert und viele von Hand optimiert. Drei der handoptimierten Integratoren sind die DP5-, BS5- und Tsit5-Methoden (ich habe CK5 nicht ausgeführt, da es, wie in der Hintergrundgeschichte erwähnt, hauptsächlich um Probleme geht, die etwas steif sind. Ich denke, der bessere Weg, mit ihnen umzugehen, ist DP5 / BS5 zu verwenden und bei Bedarf wie LSODE zu steifen Lösern zu wechseln, aber das ist eine Geschichte für eine andere Zeit) (eine Möglichkeit, um zu sehen, dass sie nahezu optimal sind, besteht darin, dass diese Methoden schneller sind als die Hairer- dopri5
Implementierungen sind zumindest anständige Implementierungen). Tests zwischen vielen Runge-Kutta-Methoden an nicht steifen Gleichungenfinden Sie im Benchmark-Ordner . Ich füge im Laufe der Zeit weitere hinzu, aber Sie können den linearen ODE- und den Drei-Körper-Problem-Präzisionsdiagrammen entnehmen. Ich messe die DP5- und Tsit5-Methoden, um eine nahezu identische Effizienz zu erzielen, und schlage die BS5-Methode in der linearen ODE aus. während es DP5 und BS5 sind, die beim Drei-Körper-Problem mit Tsit5 dahinter fast identisch sind. Aufgrund dieser Informationen habe ich mich zumindest vorerst für die DP5-Methode als Standard entschieden, die den vorherigen Empfehlungen entspricht. Dies kann sich mit zukünftigen Tests ändern (oder Sie können Benchmarks hinzufügen! Sie können gerne einen Beitrag leisten oder das Repo mit einem Stern versehen, um diese Bemühungen stärker zu unterstützen).
Zusammenfassend lässt sich sagen, dass die Order 5-Paare folgendermaßen aussehen:
Das Dormand-Prince 4/5-Paar ist ein gutes Paar, da es hinsichtlich des prinzipiellen Kürzungsfehlerkoeffizienten gut optimiert ist und eine günstige Interpolation der Ordnung 4 aufweist, wodurch es schnell für die Erstellung anständiger Diagramme geeignet ist.
Das Cash-Karp-Paar hat mehr Einschränkungen, um steife Gleichungen besser handhaben zu können. Um jedoch den vollen Nutzen zu erzielen, sollten Sie den vollständigen Algorithmus mit den 5 eingebetteten Methoden verwenden.
Die Bogacki & Shampine Order 5-Methode ist möglicherweise die effizienteste Methode zur Erzeugung von Fehlern pro Funktionsaufruf (sie verfügt über einen doppelten Fehlerschätzer, sodass sie bei schwierigeren Problemen wahrscheinlich besser funktioniert), ermöglicht jedoch größere Zeitschritte. Wenn Sie jedoch nur ein glattes Diagramm erstellen möchten, müssen Sie dieser Methode entgegenwirken: Verwenden Sie eine niedrigere Toleranz (es dauert also länger als DP5, aber mit weniger Fehlern) oder verwenden Sie mehr interpolierte Schritte. Am Ende bedeutete dies, dass es für interaktive Anwendungen möglicherweise nicht besser ist, obwohl es für einige wissenschaftliche Computeranwendungen möglicherweise besser ist.
Der Tsitorous 4/5. Wurde vor relativ kurzer Zeit (2011) entwickelt, um den DP5 in einem Kopf-an-Kopf-Vergleich zu schlagen. Meine Tests geben mir keinen Grund zu der Annahme, dass es so viel besser als DP5 ist, dass es jetzt als neue Standardmethode betrachtet werden sollte, aber zukünftige Tests könnten anfangen, sich für sie einzusetzen.
Ich habe die Tsit5-Implementierung verbessert. Bei den meisten Tests ist es jetzt besser als DP5, sowohl bei der Implementierung von DifferentialEquations.jl als auch bei der Implementierung von Hairer dopri (obwohl man sich wundern könnte, dass die Implementierungen von DifferentialEquations.jl tatsächlich schneller sind, was natürlich der Implementierung von Tsit5 hilft). Ich empfehle es jetzt als Standardbestellmethode 4/5.
Wenn Sie daran interessiert sind, zwei Integratoren zu vergleichen, lösen Sie