Simulação Física Métodos Numéricos de Integração Waldemar Celes celes@inf.puc-rio.br Tecgraf, DI/PUC-Rio 2 de Setembro de 2014 W. Celes, DI/PUC-Rio Simulação Física 1
Sumário Método de Euler Método de Runge-Kutta Passo Adaptativo Método de Verlet Bibliografia: Physics Based Animation Erleben et al. (2005) Game Physics Eberly (2004) Physically Based Modeling: Principles and Practice Witkin and Baraff (1997) W. Celes, DI/PUC-Rio Simulação Física 2
Integração Numérica Equação Diferencial Ordinária (EDO): Problema de valor inicial: ẋ = f (t, x) x(t 0 ) = x 0 ẋ = f (t, x) Simulação física (2 a Lei de Newton): f = m a Duas EDO de 1 a ordem acopladas: { ẋ = v v = f/m W. Celes, DI/PUC-Rio Simulação Física 3
Método de Euler Série de Taylor Se x é uma função contínua e diferenciável, tem-se: x(t + h) = x(t) + h ẋ(t) + h2 h3 ẍ(t) + 2! 3! x(3)(t) +... Método de Euler Usa os dois primeiros termos da série: x(t + h) = x(t) + h ẋ(t) + O(h 2 ) x(t + h) = x(t) + h f (t, x) + O(h 2 ) y i+1 = y i + h f (t i, y i ) y: aproximação de x W. Celes, DI/PUC-Rio Simulação Física 4
Método de Euler Características: Assimétrico Impreciso Exige h muito pequeno Instável t t+h W. Celes, DI/PUC-Rio Simulação Física 5
Método via formulação da integral x(t + h) = x(t) + t+h t f (t, x(t))dt Aproximação por retângulo (Euler): y i+1 = y i + h f (t i, y i ) Aproximação por trapézio: t t+h y i+1 = y i + h 2 [f (t i, y i ) + f (t i+1, y i+1 )] Problema: como avaliar se precisamos de y i+1? W. Celes, DI/PUC-Rio Simulação Física 6
Método de Euler modificado Aproximação por trapézio Usa Euler para estimar y i+1 y i+1 = y i + h 2 [f (t i, y i ) + f (t i+1, y i + h f (t i, y i ))] Características: Exige duas avaliações de f Método de ordem 2 Erro = O(h 3 ) W. Celes, DI/PUC-Rio Simulação Física 7
Método do ponto médio Usa o valor da derivada no ponto médio do intervalo Avalia passo de Euler: y = h f (t i, y i ) Avalia f no ponto médio: f med = f (t i+1/2, y i + y/2) Avança usando f med y i+1 = y i + h f med Características iguais ao do Euler modificado: Exige duas avaliações de f Método de ordem 2 Erro = O(h 3 ) Também conhecido como Runge-Kutta de ordem 2 W. Celes, DI/PUC-Rio Simulação Física 8
Runge-Kutta de ordem 3 k 0 = h f (t i, y i ) k 1 = h f (t i+1/2, y i + k 0 /2) k 2 = h f (t i+1, y i + 2k 1 k 0 ) y i+1 = y i + 1 6 (k 0 + 4k 1 + k 2 ) Características: Exige três avaliações de f Erro = O(h 4 ) W. Celes, DI/PUC-Rio Simulação Física 9
Runge-Kutta de ordem 4 k 0 = h f (t i, y i ) k 1 = h f (t i+1/2, y i + k 0 /2) k 2 = h f (t i+1/2, y i + k 1 /2) k 3 = h f (t i+1, y i + k 2 ) y i+1 = y i + 1 6 (k 0 + 2k 1 + 2k 2 + k 3 ) Características: Exige quatro avaliações de f Erro = O(h 5 ) Método numérico mais popular Precisão & desempenho W. Celes, DI/PUC-Rio Simulação Física 10
Escolha do passo de integração O passo adotado deve: Assegurar precisão e estabilidade numérica Evitar perda de colisão Tratar descontinuidade das funções Tratar eventos externos Estratégia simplista (mas, muitas vezes, suficiente): Adoção de passo fixo. void Update () { system >Evolve(t, H) t = t + H; } W. Celes, DI/PUC-Rio Simulação Física 11
Escolha do passo de integração O passo adotado deve: Assegurar precisão e estabilidade numérica Evitar perda de colisão Tratar descontinuidade das funções Tratar eventos externos Estratégia simplista (mas, muitas vezes, suficiente): Adoção de passo fixo. void Update () { system >Evolve(t, H) t = t + H; } Pode não atender aos requisitos acima W. Celes, DI/PUC-Rio Simulação Física 11
Passo adaptativo Objetivo: assegurar precisão numérica Independente do método Usa maior passo possível Respeita erro máximo prescrito Passo adaptativo Se erro = O(h n ), então teoricamente: Se passo h produz erro e Então passo h/2 produzirá erro e/2 n É possível controlar o erro numérico W. Celes, DI/PUC-Rio Simulação Física 12
Passo adaptativo Avaliação do erro associado a h Estratégia de dobrar o passo y 0 y 1 t t+h y 0 y 2 t t+h/2 t+h W. Celes, DI/PUC-Rio Simulação Física 13
Euler com passo adaptativo Estratégia de dobrar o passo x = y 1 + h 2 φ + O(h 3 ) ( ) h 2 x = y 2 + 2 φ + O(h 3 ) 2 Desprezando O(h 3 ): = y 2 y 1 y 1 + h 2 φ = y 2 + h2 2 φ y 2 y 1 = h 2 φ h2 2 φ = h2 2 φ que representa o erro associado a y 2 W. Celes, DI/PUC-Rio Simulação Física 14
Como adaptar o passo Exemplo: Erro máximo permitido: e max = 10 4 Se erro obtido for y 2 y 1 = 10 5 Valida-se o passo Aumenta-se o passo h novo = ( emax e ) 1/2 h = 3.16 h Se erro obtido for y 2 y 1 = 10 3 Invalida-se o passo Refaz o avanço, diminuindo-se o passo h novo = ( emax e ) 1/2 h = 0.316 h W. Celes, DI/PUC-Rio Simulação Física 15
Euler com passo adaptativo Note que: x = y 2 + 2 ( ) h 2 φ + O(h 3 ) 2 x = y 2 + + O(h 3 ) Logo, pode-se pensar em avaliar a função com erro O(h 3 )? y = y 2 + Em geral, métodos de ordem superior são mais confiáveis Neste caso, no entanto, perderíamos o controle do erro W. Celes, DI/PUC-Rio Simulação Física 16
Euler com passo adaptativo Note que: x = y 2 + 2 ( ) h 2 φ + O(h 3 ) 2 x = y 2 + + O(h 3 ) Logo, pode-se pensar em avaliar a função com erro O(h 3 )? y = y 2 + Em geral, métodos de ordem superior são mais confiáveis Neste caso, no entanto, perderíamos o controle do erro Passo adaptativo para outros métodos Erro: O(h n ) h novo = ( emax e ) 1/n h W. Celes, DI/PUC-Rio Simulação Física 16
Embedded Runge-Kutta (ordem 4) Método de ordem 5 que tem embutido a avaliação de erro do método de ordem 4: k 1 = h f (t i, y i ) k 2 = h f (t i + a 2 h, y i + b 21 k 1 )... k 6 = h f (t i + a 6 h, y i + b 61 k 1 + + b 65 k 5 ) 6 y i+1 = y i + c i k i + O(h 6 ) y i+1 = y i + i=1 6 ci k i + O(h 5 ) i=1 = y i+1 yi+1 onde: a i, b ij, c i, ci são parâmetros da tabela Cash-Karp W. Celes, DI/PUC-Rio Simulação Física 17
Integração de Verlet Da série de Taylor: x(t + h) = x(t) + ẋ h + 1 2ẍ h2 + 1 6 x (3) (h) h 3 + O(h 4 ) x(t h) = x(t) ẋ h + 1 2ẍ h2 1 6 x (3) (h) h 3 + O(h 4 ) Somando as duas expressões: x(t + h) = 2x(t) x(t h) + ẍ(h) h 2 + O(h 4 ) Para a física de partícula: y i+1 = 2y i + y i 1 + h2 m f Não armazena explicitamente (e não avalia) a velocidade Reversível para sistemas conservativos: f = V(t, x) = f(t, x) W. Celes, DI/PUC-Rio Simulação Física 18
Utilização da integração de Verlet Sistemas conservativos: f(t, x) Condições iniciais: { y0 ẏ 0 Para determinação de y 1, pode-se usar Euler: y 1 = y 0 + h ẏ 0 y i+1 = 2y i y i 1 + h2 m f(t i, y i ) W. Celes, DI/PUC-Rio Simulação Física 19
Utilização da integração de Verlet Sistemas não conservativos: f(t, x, ẋ) Estimando a velocidade: ẏ 1 = y i y i 1, O(h) h ẏ 1 = y i+1 y i 1, O(h 2 ) 2h Evolução do sistema: y 1 = y 0 + h ẏ 0 ẏ i = y i y i 1 h y i+1 = 2y i y i 1 + h2 m f(t i, y i, ẏ i ) Observe que assume velocidade constante no 1 o passo W. Celes, DI/PUC-Rio Simulação Física 20
Estratégia de predição & correção Objetiva melhorar a estimativa de ẏ Predição: ẏ i = y i y i 1 h y i+1 = 2y i y i 1 + h2 m f(t i, y i, ẏ i ) Correção: ẏ i = y i+1 y i 1 2h y i+1 = 2y i y i 1 + h2 m f(t i, y i, ẏ i ) W. Celes, DI/PUC-Rio Simulação Física 21
Emulando viscosidade f d = k v Reescrevendo a equação de integração: y i+1 = y i + (y i y i 1 ) + h2 m f y i+1 = y i + (1 δ)(y i y i 1 ) + h2 m f onde δ representa o coeficiente de viscosidade (e.g. 10 2 ) W. Celes, DI/PUC-Rio Simulação Física 22
Método leap frog Série de Taylor para velocidade: ẋ(t + h) = ẋ(t) + h ẍ(t) + h2 2 x(3) (t) +... ẋ(t h) = ẋ(t) h ẍ(t) + h2 2 x(3) (t)... Subtraindo e usando metade do passo: ẋ(t + h/2) = ẋ(t h/2) + h ẍ(t) + O(h 3 ) W. Celes, DI/PUC-Rio Simulação Física 23
Método leap frog Série de Taylor para velocidade: ẋ(t + h) = ẋ(t) + h ẍ(t) + h2 2 x(3) (t) +... ẋ(t h) = ẋ(t) h ẍ(t) + h2 2 x(3) (t)... Subtraindo e usando metade do passo: ẋ(t + h/2) = ẋ(t h/2) + h ẍ(t) + O(h 3 ) Método Leap frog Sistemas conservativos x x Usa Euler para obter ẏ(h/2) t ẏ(t + h/2) = ẏ(t h/2) + h ÿ(t) y(t + h) = y(t) + h ẏ(t) W. Celes, DI/PUC-Rio Simulação Física 23
Método intercalado para sistemas não conservativos y 1 = y 0 + h 2 ẏ0 ẏ 1 = ẏ 0 + h 2m f(0, y 0, ẏ 0 ) y i+2 = y i + h ẏ i+1 ẏ i+2 = ẏ i + h m f(t i+1, y i+1, ẏ i+1 ) 0 h/2 h 3h/2 2h t W. Celes, DI/PUC-Rio Simulação Física 24
Referência Eberly, D. H. (2004). Game Physics. Morgan Kaufmann Publishers. Erleben, K., Sporring, J., Henriksen, K., and Dohlmann, H. (2005). Physics Based Animation. Charles River Media. Witkin, A. and Baraff, D. (1997). Physically based modeling: Principles and practice. http://www.cs.cmu.edu/ baraff/sigcourse/. W. Celes, DI/PUC-Rio Simulação Física 25