Was sind die neuesten Methoden zur numerischen Lösung von ODEs mit diskontinuierlicher rechter Seite? Mich interessieren vor allem stückweise glatte rechte Seitenfunktionen, zB sign.
Ich versuche die Gleichung von folgendem Typ zu lösen:
Was sind die neuesten Methoden zur numerischen Lösung von ODEs mit diskontinuierlicher rechter Seite? Mich interessieren vor allem stückweise glatte rechte Seitenfunktionen, zB sign.
Ich versuche die Gleichung von folgendem Typ zu lösen:
Antworten:
Siehe das neue Buch von David Stewart (2011) zu diesem Thema, Dynamics with Inequalities: Impacts and Hard Constraints . Coulomb-Reibungsprobleme werden in den Analysekapiteln mehrfach erwähnt.
Kapitel 8 befasst sich mit numerischen Methoden für nicht glatte ODEs und DAEs. Es befürwortet meistens vollständig implizite Runge-Kutta-Methoden mit einer speziellen Behandlung der Nichtglätte. Beachten Sie Abschnitt 8.4.4, in dem darauf hingewiesen wird, dass alle Methoden auf die Genauigkeit erster Ordnung herabgesetzt werden, wenn Sie die Punkte der Nichtglätte nicht genau lokalisieren. Daher ist implizites Euler (mit Modifikationen für Nichtglätte) in der Praxis beliebt. Außerdem sind Lösungen von Problemen mit unendlich großen Ungleichungen im Allgemeinen nicht stückweise glatt, daher liefert die Theorie nur O ( Konvergenz, obwohl inPraxis, O ( h ) wird oft beobachtet.
Die wichtigste mir bekannte Referenz ist David Stewarts These, die mehr als 20 Jahre alt ist:
Die Zusammenfassung verweist auf einige bedeutende frühere Arbeiten. Ein Schlüsselwort ist hier die differentielle Inklusion .
Wie Mike Dunlavey bereits in einem Kommentar ausgeführt hat, wird dies häufig mit sogenannten Nulldurchgangsfunktionen durchgeführt , dh Funktionen , die von > 0 bis < kreuzen
Wenn Sie beispielsweise eine sich bewegende Masse mit einem Block haben, kann der Abstand zwischen der Masse und dem Block als Nulldurchgangsfunktion verwendet werden.
Viele ODE-Löser (z. B. SUNDIALS CVODE) prüfen automatisch, ob eine der Nulldurchgangsfunktionen im letzten Zeitschritt ihr Vorzeichen geändert hat. Wenn dies der Fall ist, wird eine Wurzelsuchmethode verwendet, um den genauen Ort der Wurzel zu bestimmen. Der Solver kann dann an dieser bestimmten Position neu gestartet werden. Dies erfolgt entweder automatisch durch den Solver selbst oder manuell durch den aufrufenden Code.