Ich habe eine ODE:
u ( 0 ) = - 1
Ich weiß, dass diese spezielle ODE analytisch steif ist. Ich weiß auch, dass wenn wir eine explizite (Vorwärts-) Zeitschrittmethode verwenden (Euler, Runge-Kutta, Adams usw.), die Methode sehr große Fehler zurückgeben sollte, wenn der Zeitschritt zu groß ist. Ich habe also zwei Fragen:
Werden so steife ODEs im Allgemeinen bestimmt, wenn ein analytischer Ausdruck für den Fehlerterm nicht verfügbar oder ableitbar ist?
Wie bestimme ich im Allgemeinen einen Zeitschritt, der "klein genug" ist, wenn die ODE steif ist?
Antworten:
So beantworten Sie Ihre Fragen:
Soweit ich weiß, erfordern explizite Methoden in der Praxis außerordentlich kleine Zeitschritte im Verhältnis zu Ihrer interessierenden Zeitskala (siehe Antworten auf diese Frage, was es bedeutet, dass eine ODE steif ist ), um genaue Ergebnisse zu erzielen In jeder Hinsicht ist Ihr Problem steif. Um die Anforderungen an die Schrittgröße zu bestimmen, verlassen Sie sich auf eine der vielen Bibliotheken, die von Experten geschrieben wurden (die MATLAB-Suite ist ein Beispiel, auch SUNDIALS, VODE, DASPK, DASSL, LSODE usw.), die über adaptive Heuristiken für Zeitschritte verfügen. Das SUNDIALS-Handbuch erläutert die Entscheidungsregeln, die zur Bestimmung der Größe der Zeitschritte verwendet werden, die das Paket benötigt, und gibt Ihnen ein Beispiel für Regeln, die in der Praxis verwendet werden.
Auch hier würde ich in der Praxis eine Bibliothek mit adaptiven Zeitschritten verwenden, da dies effizienter ist. Wenn Sie jedoch eine Methode selbst mit festen Schrittgrößen codieren, große Schwingungen bemerken oder Ihre Lösung "explodiert", würden Sie vermuten, dass Ihr Zeitschritt zu groß ist, und ihn reduzieren. Wiederholen Sie diesen Vorgang, bis Sie eine einigermaßen gut erzogene numerische Lösung erhalten. Lehrbücher wie Ascher und Petzold sowie Hairer und Wanner haben gute Beispiele für dieses Phänomen.
quelle
Eine bessere Sichtweise ist, dass bei einem steifen Problem jede stabile explizite Berechnung zu einem Fehler führt, der viel kleiner als die erforderliche Fehlertoleranz ist .
Es gibt viele gute Methoden zum automatischen Erkennen der Steifheit mithilfe expliziter Schemata, insbesondere eingebettete Runge-Kutta-Paare. Siehe zum Beispiel:
In Faleichiks zweitem Beispiel würde man bei einer Verringerung der Schrittgröße eine plötzliche dramatische Abnahme des Fehlers auf Werte sehen, die weit unter einer typischen gewünschten Toleranz liegen, wenn die stabile Zeitschrittschwelle überschritten wird. Ein guter Fehlerschätzer würde also tatsächlich die Steifheit des Problems offenbaren. Bei dem ersten Problem würde der mit einer stabilen Schrittgröße erhaltene Fehler im Bereich der typischen gewünschten Toleranz liegen, was auf eine Nichtsteifigkeit hinweist.
Beachten Sie daher, dass jedes Problem nicht steif wird, wenn eine ausreichend strenge Fehlertoleranz erforderlich ist.
quelle
1. Können wir die Steifheit numerisch erkennen, indem wir explizite Methoden anwenden?
Ist das Problem also steif? Die Antwort lautet NEIN ! Hier ist eine kleine Schrittgröße erforderlich, um die Lösungsschwingungen korrekt wiederzugeben .
Ist das Problem steif? JA ! Wir haben sehr kleine Schritte unternommen, um die Lösung zu reproduzieren, die sich sehr langsam ändert. Das ist irrational! Die Größe des Zeitschritts ist hier durch die Stabilitätseigenschaften von explizitem Euler begrenzt .
Dieses Problem ist
Schlussfolgerung: Die Informationen zu Zeitschritten und entsprechenden Fehlern reichen nicht aus, um die Steifheit zu erkennen. Sie sollten sich auch die erhaltene Lösung ansehen. Wenn es langsam variiert und die Schrittweite sehr klein ist, ist das Problem höchstwahrscheinlich steif. Wenn die Lösung schnell schwingt und Sie Ihrer Fehlerschätzungstechnik vertrauen, ist dieses Problem nicht schwerwiegend.
2. Wie kann die maximale Schrittweite ermittelt werden, die es ermöglicht, ein steifes Problem mit einer expliziten Methode zu integrieren?
Wenn Sie einen expliziten Black-Box-Solver mit automatischer Schrittsteuerung verwenden, brauchen Sie nichts zu tun: Die Software nimmt die erforderliche Schrittgröße adaptiv an.
Natürlich ist eine solche Analyse hauptsächlich für lineare Probleme mit bekanntem Spektrum anwendbar. Für praktischere Probleme sollten wir uns auf numerische Methoden zur Erkennung der Steifheit verlassen (siehe Referenzen und Kommentare in anderen Antworten).
quelle