Em números, é muito importante ser capaz de identificar esquemas instáveis e melhorar sua estabilidade. Como identificar cálculos instáveis de ponto flutuante?
Estou trabalhando em uma simulação muito complexa, onde muitos esquemas numéricos trabalham juntos e estou procurando um método para identificar suas partes fracas. Estou trabalhando em um modelo físico envolvendo equações diferenciais. Uma visão geral do processo geral é:
(Passo preliminar) Reunir observações física P .
Determine os parâmetros iniciais da simulação. Isso usa um algoritmo de otimização, no qual caminhamos em um espaço de parâmetros e procuramos pelos parâmetros C, de modo que alguma função de erro E (F (C), P) seja minimizada, onde F é alguma quantidade derivada dos parâmetros.
Conecte C no mecanismo de simulação. Este é um esquema de Euler do EDP, para que, a cada passo, calculemos os termos que impulsionam a dinâmica (cada um deles é uma função complexa, potencialmente sujeita à instabilidade) e alimentamos o esquema de Euler com esses termos dinâmicos para calcular os próximos Estado. Isso continua por milhares de pontos no tempo.
No final da simulação, calculamos alguma função Prova (S) do estado final S e comparamos com algumas quantidades que Requer (P) deduzidas das quantidades observadas. Esta não é uma prova formal do resultado, mas uma verificação de plausibilidade.
Além disso, vejo uma torre de operações complexas (computação de termos dinâmicos, dentro do esquema de Euler, dentro da Prova ). E gostaria de reconhecer "partes ruins" e corrigi-las.
Especulo que o uso de uma implementação de software de números de ponto flutuante com precisão reduzida aumentaria a instabilidade dos esquemas numéricos, facilitando assim a comparação entre diferentes implementações. Essa é uma técnica comum para investigar essa pergunta? É possível usar uma máquina virtual, como Bochs, para conseguir isso sem alterar o programa?
Para lidar adequadamente com a questão da estabilidade, às vezes é aceitável direcionar a entrada típica do procedimento numérico, para que possa ser ajustado para se sair bem nessa entrada e talvez menos bem em outra entrada válida, mas improvável. Dada uma amostra de entradas típicas, é possível bisbilhotar alguns resultados intermediários e preparar um perfil estatístico para eles. Novamente, essa é uma técnica comum para estudar questões de estabilidade? Uma máquina virtual é útil para isso?