Lorsque nous avons un modèle numérique qui représente un véritable système physique et qui présente le chaos (par exemple, les modèles de dynamique des fluides, les modèles climatiques), comment pouvons-nous savoir que le modèle fonctionne comme il se doit? Nous ne pouvons pas comparer directement deux ensembles de sorties de modèle, car même de petits changements dans les conditions initiales changeront considérablement les sorties de simulations individuelles. Nous ne pouvons pas comparer directement la sortie du modèle aux observations, car nous ne pouvons jamais connaître avec suffisamment de détails les conditions initiales des observations, et l'approximation numérique entraînerait de toute façon des différences mineures qui se propageraient à travers le système.
Cette question est en partie inspirée de la question de David Ketcheson sur les tests unitaires de code scientifique : je suis particulièrement intéressé par la façon dont les tests de régression pour de tels modèles pourraient être mis en œuvre. Si un changement mineur des conditions initiales peut conduire à des changements de sortie majeurs (qui peuvent tout de même être des représentations adéquates de la réalité), comment pouvons-nous séparer ces changements des changements causés par la modification des paramètres ou la mise en œuvre de nouvelles routines numériques?
Si votre code peut s'exécuter dans des régimes non chaotiques de votre problème sous-jacent, en particulier des régimes non chaotiques où vous pouvez utiliser la méthode des solutions fabriquées, vous devez écrire des tests de régression qui s'exécutent dans ces régimes même s'ils ne sont pas autrement intéressants pour vous. . Si ces tests échouent, vous savez immédiatement que quelque chose s'est mal passé dans vos dernières modifications de code. Ensuite, vous pouvez passer à des problèmes plus pertinents physiquement.
la source
Tout d'abord, je vais me concentrer sur votre dernière phrase, car vous touchez à différentes choses dans votre question, mais je pense qu'elle rend bien compte de ce que vous demandez. Si vous modifiez des routines numériques, vous ne devez pas modifier les conditions initiales ou les paramètres système avant d'avoir validé la nouvelle routine par rapport à l'ancienne. Au niveau le plus faible, je vois cela comme la comparaison de certaines valeurs de moyenne temporelle sur votre solution, et elles étant d'accord (même si les comportements transitoires divergeaient les uns des autres dans le chaos). Au niveau le plus fort, vous vous attendriez à ce que les deux routines reproduisent le comportement transitoire complet. Laquelle de celles-ci vous voulez et celle qui est acceptable dépend des questions que vous posez et des conclusions que vous tirez des solutions.
Quant à savoir si un modèle "fonctionne comme il se doit", c'est une question entièrement différente. Cela n'a rien à voir avec les routines numériques que vous choisissez. Comment vous construisez votre modèle, de vos hypothèses simplificatrices à vos mesures / calculs de paramètres, vous devriez baser toutes vos décisions sur la physique du problème et, espérons-le, des travaux antérieurs effectués sur des cas similaires. Vous pouvez peut-être valider un modèle avec un cas simple reproduit dans un environnement de laboratoire, mais il y a des moments où même cela n'est pas anodin. Si vous ne pouvez pas déterminer un paramètre système important dans un ordre de grandeur, vous ne pouvez pas vous attendre à ce que quiconque fasse confiance aux petits détails que vous calculez dans le comportement local transitoire.
la source