Quando temos um modelo numérico que representa um sistema físico real e que exibe caos (por exemplo, modelos de dinâmica de fluidos, modelos climáticos), como podemos saber que o modelo está funcionando como deveria? Não podemos comparar diretamente dois conjuntos de resultados do modelo, porque mesmo pequenas alterações nas condições iniciais mudarão drasticamente os resultados das simulações individuais. Não podemos comparar a saída do modelo diretamente com as observações, porque nunca podemos conhecer com detalhes suficientes as condições iniciais das observações e a aproximação numérica causaria, de qualquer maneira, pequenas diferenças que se propagariam pelo sistema.
Essa questão é parcialmente inspirada na pergunta de David Ketcheson sobre o código científico de teste de unidade : estou particularmente interessado em como os testes de regressão para esses modelos podem ser implementados. Se uma pequena mudança nas condições iniciais pode levar a grandes mudanças na produção (que ainda podem ser representações adequadas da realidade), como podemos separar essas mudanças das mudanças causadas pela modificação de parâmetros ou pela implementação de novas rotinas numéricas?
Se o seu código puder ser executado em regimes não caóticos do seu problema subjacente, especialmente em regimes não caóticos, nos quais você pode usar o método de soluções fabricadas, escreva testes de regressão que são executados nesses regimes, mesmo que não sejam interessantes para você . Se esses testes falharem, você saberá imediatamente que algo deu errado nas alterações de código mais recentes. Depois, você pode passar para problemas mais relevantes fisicamente.
fonte
Primeiro, vou focar na sua última frase, enquanto você aborda algumas coisas diferentes na sua pergunta, mas acho que ela captura adequadamente o que você está perguntando. Se você estiver alterando rotinas numéricas, não deverá alterar as condições iniciais ou os parâmetros do sistema até ter validado a nova rotina da antiga. No nível mais fraco, vejo isso como uma comparação de alguns valores médios do tempo em relação à sua solução, e eles estão de acordo (mesmo que os comportamentos transitórios divergissem um do outro dentro do caos). No nível mais forte, você esperaria que as duas rotinas reproduzissem o comportamento transitório completo. Qual delas você deseja e qual é aceitável depende de quais perguntas você está fazendo e de quais conclusões você está tirando das soluções.
Quanto a dizer se um modelo está "funcionando como deveria", essa é uma questão totalmente diferente. Isso não tem nada a ver com as rotinas numéricas que você escolher. Como você constrói seu modelo, de suas suposições simplificadoras a suas medições / cálculos de parâmetros, você deve basear todas as suas decisões na física do problema e, esperançosamente, trabalhos anteriores feitos em casos semelhantes. Você pode validar um modelo com um caso simples reproduzido em uma configuração de laboratório, mas há momentos em que mesmo isso não é trivial. Se você não pode determinar um parâmetro importante do sistema dentro de uma ordem de magnitude, não pode esperar que alguém confie nos pequenos detalhes que você está calculando no comportamento local transitório.
fonte