Prós e contras de ambos os métodos:
Prós RK4:
- precisão (graças à sua melhor série de aproximações, produz uma precissão de 4ª ordem)
- o amortecimento artificial / inerentemente induzido (um pouco como os métodos implícitos o fazem) adiciona estabilidade (ao passo que um simples passo de Euler não - ele faz o oposto, introduzindo energia fantasma que se acumula e pode mergulhar o sistema no caos)
Contras RK4:
- despesa de computação: embora não seja tão exigente em comparação com métodos implícitos ou híbridos IMEX, o RK4 é 4 vezes mais caro que o Euler explícito, pois exige muito mais avaliações de funções. Isso é mostrado ao apontar para o limite da otimização.
- ainda instável: dependendo dos tipos de forças envolvidas, o RK4 pode ser tão instável quanto Euler. Em média, o RK4 é um pouco mais estável e tende a tirar esse benefício de suas "habilidades" de amortecimento.
- Não simplético: o amortecimento numérico tem um custo - você não pode simular sistemas onde energia / volume / etc. a perda não deve aplicar um efeito visível ao longo do tempo (por exemplo, Dinâmica Molecular, forças derivadas de campos potenciais, problemas variacionais)
Verlet Pros:
- uma ou duas vezes a complexidade de uma etapa de Euler (dependendo do seu sabor de Verlet: posição ou velocidade).
- simplético: economiza energia interna
- precisão de segunda ordem: muitos jogos não exigem resultados de ponto flutuante de alta precisão e a segunda ordem é mais do que agradável aos olhos em um cenário de jogo (mais: foi usada em uma simulação de cenário que não é de jogo quando foi "descoberta", portanto não é tão ruim)
Contras Verlet:
- estável, mas ainda assim: provavelmente o melhor método explícito em termos de estabilidade. Tende a ganhar vantagem quando restrições rígidas são adicionadas ao sistema, permitindo menos dores de cabeça ao implementar restrições projetadas em motores de dinâmica baseados em posição. Ele dispara para o infinito se o sistema for perturbado por grandes forças externas e nenhum amortecimento / atrito for adicionado. Mesmo assim, existem certos limites impostos numericamente ao tamanho das forças internas (mola), mas elas são mais altas, em média, do que o RK4 pode fazer
- menor precisão: não é útil se você deseja estimativas de alta precissão
- requer, em média, intervalos de tempo menores que o RK4 para algumas simulações (o RK4 se beneficia da precisão e do amortecimento interno)
Usar um sobre o outro depende do cenário. Se rigidez e grandes forças externas e energias virtuais forem um problema, considere outros métodos com a palavra "implícita" em sua descrição / título.
Observe que alguns autores / livros usam o termo Euler semi-implícito para um integrador Euler explícito real chamado método simplético de Euler (ou Euler Cromer) do qual Verlet é realmente derivado. Verlet também é chamado por algumas pessoas de "método de salto". O Velocity Verlet e o método do ponto médio são bastante semelhantes, pois uma estimativa em um intervalo de tempo det + 0.5*dt
é necessário para uma etapa do tipo preditor-corretor. Os métodos IMEX (implícito-explícito) também são usados para nomear duas abordagens semelhantes, mas não idênticas: separar os cálculos em partes rígidas e não rígidas e usar diferentes integradores (o explícito para não rígido, implícito para rígido) OU resolver a velocidade com uma etapa de atualização implícita e atualize a posição de maneira explícita (este é um método híbrido semi-implícito que se enquadra na classe de métodos IMEX, porque as partes rígidas afetam mais o cálculo da aceleração). Os métodos implícitos são mais complicados e exigem a solução de um sistema de equações não lineares simultâneas para toda a configuração. Métodos implícitos são usados para corpos deformáveis e geralmente não são usados para corpos rígidos dissociados.
Conforme declarado em um dos comentários, se você puder, não use Euler. Use o método do ponto médio, o Euler semi-implícito ou, à mesma despesa, a posição-Verlet. Todos eles têm precisão um pouco mais alta e sensivelmente mais estabilidade do que o integrador explícito Euler.
Leitura de mini-comparação recomendada :
http://wiki.vdrift.net/Numerical_Integration