Como posso resolver numericamente um ODE para


8

Suponha que tenhamos um problema de valor inicial no formato onde x 0R n é conhecido exatamente (ou seja, com precisão ilimitada) e podemos avaliar eficientemente f : R nR n com qualquer precisão. Ou seja, temos uma caixa preta que, dado um vetor xR n e um número inteiro M , retorna uma aproximação de f ( x ) garantida como correta para osdígitos M no polinômio de tempo em M

dxdt=f(x)x(0)=x0
x0Rnf:RnRnxRnMf(x)MM. Gostaria de saber se existem métodos práticos para obter uma aproximação de (onde t fR é dado um tempo final) que é comprovadamente correto para N dígitos .x(tf)tfRN

Claramente, isso não será possível para qualquer função , pois f pode ter algum comportamento maluco que altera drasticamente a solução verdadeira, mas não é captado em um número razoável de avaliações. Portanto, também estou interessado em saber que tipo de condições de bom comportamento em f (por exemplo, todas as derivadas parciais existem e são limitadas, pequenas constantes de Lipschitz etc.) seriam necessárias para fazer isso.f:RnRnff


hshs10MM1/h10M/s1/hO(M)M

@ Kirill: Em uma abordagem espectral (ou usando outros métodos tradicionais de EDO), acho que o OP precisaria conhecer constantes principais para os assintóticos para obter um certificado de precisão. Essas constantes viriam da análise ou computação via aritmética de intervalo.
Geoff Oxberry

Respostas:


9

x(tf)tfRN

Tudo isso depende da sua opinião sobre a praticidade da aritmética de intervalo. Existem integradores validados disponíveis, como o código COZY do grupo de Martin Berz. Você provavelmente gostaria de ver artigos de Neumaier, Nedialkov, Berz e Makino, Chachuat, Stadtherr e talvez alguns outros grupos. Seus trabalhos tendem a usar as frases "modelo de Taylor", "integrador validado" e "aritmética de intervalo" entre outras.

Claramente, isso não será possível para qualquer função f : R n → R n , pois f pode ter algum comportamento maluco que altera drasticamente a solução verdadeira, mas não é captado em um número razoável de avaliações. Portanto, também estou interessado em saber que tipo de condições de bom comportamento em ff:RnRnff

Rnf(x)

kCk

Da perspectiva do usuário, esses integradores se resumem a duas coisas (-ish):

  • f
  • Posso aumentar este código-fonte para compatibilidade com uma biblioteca de diferenciação automática, bem como uma biblioteca aritmética com intervalo?

fkk

Quanto aos métodos típicos de solução de EDO, para comentar a resposta de Wolfgang:

Não acho que você possa obter um certificado de que o erro está abaixo de um determinado número, mas você obterá que a estimativa está abaixo da sua tolerância.

Qualquer método que tenha um estimador de erro incorporado tem as informações a que Wolfgang se refere. Normalmente, isso significa que o método de integração realmente calcula duas (ou mais soluções; por exemplo, o DOP853 calcula 3 soluções) e as compara através de alguma norma. A suposição é de que a solução de ordem superior é mais precisa, o que pode não ser verdade, dependendo do problema, período de tempo, condições iniciais etc. A solução retornada por uma implementação pode ser qualquer uma das soluções candidatas calculadas. Tomando o exemplo comum de Runge-Kutta 4 (5) como exemplo, pode-se retornar a solução de 4ª ordem ou a solução de 5ª ordem; as abordagens típicas usam as fórmulas de Dormand-Prince, que minimizam o erro na solução de 5ª ordem e retornam que, em vez da solução de 4ª ordem, porque é mais provável que a solução de 5ª ordem seja mais precisa. Além de examinar os problemas de estabilidade, acho que você deve examinar o controle de erros (Seção II.4 de Hairer e Wanner); estabilidade é necessária, mas não suficiente para precisão.

MM


Estou tentado a retirar a minha resposta, porque @ geoffoxberry de é apenas muito melhor do que a minha ...
Wolfgang Bangerth

2

A primeira de suas perguntas é algo que você pode obter da maioria dos integradores de ODE enlatados, pois todos, de uma maneira ou de outra, acompanham as estimativas do erro. Não acho que você possa obter um certificado de que o erro está abaixo de um determinado número, mas você obterá que a estimativa está abaixo da sua tolerância.

f(x)ff

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.