Wenn wir ein numerisches Modell haben, das ein reales physikalisches System darstellt und Chaos aufweist (z. B. Modelle der Fluiddynamik, Klimamodelle), wie können wir dann wissen, dass das Modell so funktioniert, wie es sollte? Wir können zwei Sätze von Modellausgaben nicht direkt vergleichen, da selbst kleine Änderungen der Anfangsbedingungen die Ausgaben einzelner Simulationen dramatisch verändern. Wir können die Modellausgabe auch nicht direkt mit Beobachtungen vergleichen, da wir die Anfangsbedingungen der Beobachtungen nie genau genug kennen können und die numerische Approximation ohnehin geringfügige Unterschiede verursachen würde, die sich durch das System ausbreiten würden.
Diese Frage ist teilweise von David Ketchesons Frage zum wissenschaftlichen Code von Unit-Tests inspiriert : Ich bin besonders daran interessiert, wie Regressionstests für solche Modelle implementiert werden könnten. Wenn eine geringfügige Änderung der Anfangsbedingungen zu größeren Änderungen der Ausgabe führen kann (was durchaus noch eine angemessene Darstellung der Realität sein kann), wie können wir diese Änderungen dann von Änderungen trennen, die durch Ändern von Parametern oder Implementieren neuer numerischer Routinen verursacht werden?
Wenn Ihr Code in nicht chaotischen Regimen Ihres zugrunde liegenden Problems ausgeführt werden kann, insbesondere in nicht chaotischen Regimen, in denen Sie die Methode der hergestellten Lösungen verwenden können, sollten Sie Regressionstests schreiben, die in diesen Regimen ausgeführt werden, auch wenn sie für Sie ansonsten nicht interessant sind . Wenn diese Tests fehlschlagen, wissen Sie sofort, dass bei Ihren letzten Codeänderungen ein Fehler aufgetreten ist. Dann können Sie zu physikalisch relevanteren Problemen übergehen.
quelle
Zunächst werde ich mich auf Ihren letzten Satz konzentrieren, während Sie einige verschiedene Dinge in Ihrer Frage ansprechen, aber ich bin der Meinung, dass er Ihre Fragen angemessen erfasst. Wenn Sie numerische Routinen ändern, sollten Sie die Anfangsbedingungen oder Systemparameter erst ändern, wenn Sie die neue Routine von der alten validiert haben. Auf der schwächsten Ebene sehe ich darin einen Vergleich einiger zeitlich gemittelter Werte über Ihre Lösung, und sie stimmen überein (selbst wenn die vorübergehenden Verhaltensweisen innerhalb des Chaos voneinander abweichen). Auf der stärksten Ebene würden Sie erwarten, dass die beiden Routinen das vollständige Übergangsverhalten reproduzieren. Welche davon Sie wollen und welche akzeptabel ist, hängt davon ab, welche Fragen Sie stellen und welche Schlussfolgerungen Sie aus den Lösungen ziehen.
Für die Feststellung, ob ein Modell "so funktioniert, wie es sollte", ist dies eine ganz andere Frage. Dies hat nichts mit den von Ihnen gewählten numerischen Routinen zu tun. Wie Sie Ihr Modell erstellen, von Ihren vereinfachenden Annahmen bis zu Ihren Messungen / Berechnungen von Parametern, sollten Sie alle Ihre Entscheidungen auf die Physik des Problems stützen und hoffentlich vorher an ähnlichen Fällen arbeiten. Möglicherweise können Sie ein Modell anhand eines einfachen Falls validieren, der in einer Laborumgebung reproduziert wurde. Manchmal ist dies jedoch nicht trivial. Wenn Sie einen wichtigen Systemparameter nicht innerhalb einer Größenordnung bestimmen können, können Sie nicht erwarten, dass jemand den kleinen Details vertraut, die Sie im vorübergehenden lokalen Verhalten berechnen.
quelle