MÉTODOS COMPUTACIONAIS - Mestrado em Física Experimental 1999/2000 EQUAÇÕES DIFERENCIAIS João Carvalho Departamento de Física da F.C.T.U.C e LIP-Coimbra S UMÁRIO 1- Introdução 2- Método de Euler 3- Métodos de Runge-Kuta 4- Sistemas de equações 5- Controlo adaptativo do tamanho do passo B IBLIOGRAFIA 1- “Numerical Recipes in C” W.H.Press et al., 2ª Ed., Cambridge University Press, 1992. 2- “Numerical Methods for Engineers” Steven Chapra e Raymond P. Canale, McGraw-Hill International Editions, Applied Mathematics Series, 1990. 3- “Numerical Methods with FORTRAN IV Case Studies” William S. Dorn e Daniel D. McCracken, Wiley International Edition, 1972. 4- “Computational Methods in Physics and Engineering” Samuel S. M. Wong, World Scientific, 1997. Métodos Computacionais 2 Equações Diferenciais I NTRODUÇÃO As equações diferenciais surgem em todos os domínios e situações em física (desde as leis de Newton à teoria de campo). Em muitas situações não existem soluções analíticas exactas (apenas em casos muito especiais). Existe uma teoria matemática de resolução de equações diferenciais muito desenvolvida e sofisticada. Aqui interessam-nos apenas os métodos numéricos computacionais. Nesta secção tentamos resolver equações diferenciais do tipo dy f ( x, y) dx Na maior parte dos casos se a equação não estiver nesta forma pode ser colocada nela. Por exemplo: y’’ = g(y’,x,y) pode ser rescrita como z’ = g(z,x,y) y’ = z Métodos Computacionais 3 Equações Diferenciais Queremos obter y. Vamos utilizar métodos iterativos: Novo Valor = Valor anterior + declive*passo Ou y i+1 = y i + m*h E a questão é a melhor estimativa para o declive m. É necessário existir um ponto de partida, o valor inicial de y para um certo x. A resolução de equações diferenciais está intimamente relacionada com a resolução de integrais. Métodos Computacionais 4 Equações Diferenciais MÉTODO DE E ULER A primeira derivada fornece uma estimativa directa do declive em xi m = f(xi,yi) onde f(xi,yi) é a equação diferencial calculada em (xi,yi). Então yi+1 = yi + f(xi,yi) h É uma extrapolação linear sobre o passo h. A expansão de Taylor de y, com início no valor (xi,yi) é dada por yi+1 = yi + yi’h + yi’’h2/2! + yi’’’h3/3! + ... =yi + f(xi,yi)h + f’(xi,yi)h2/2! + f’’(xi,yi)h3/3! + ... onde h=xi+1-xi. Então o método de Euler corresponde à expansão de Taylor até ao segundo termo. Na aplicação do Método de Euler o erro pode ser reduzido diminuindo o tamanho do passo. Fornece resultados exactos para funções lineares. Método de Heun Métodos Computacionais 5 Equações Diferenciais Uma melhoria ao Método de Euler, é um método de previsão/correcção Previsão y0i+1 = yi + f(xi,yi) h Correcção yi+1 = yi + ( f(xi,yi)+f(xi+1,y0i+1 ) h/2 E pode ser usado iterativamente para melhorar a solução. Quando a função depende apenas de x podemos fazer apenas yi+1 = yi + ( f(xi,yi)+f(xi+1,y0i+1 ) h/2 Método melhorado do Polígono Utiliza o Método de Euler para prever o valor de y no meio do intervalo yi+1/2 = yi + f(xi,yi) h/2 Usa esta previsão para estimar o declive no meio do intervalo y’i+1/2 = f(xi+1/2,yi+1/2 ) E finalmente a estimativa de y yi+1 = yi + f(xi+1/2,yi+1/2 ) h Métodos Computacionais 6 Equações Diferenciais MÉTODOS DE R UNGE -K UTA Os Métodos de Runge-Kuta atingem a precisão de uma expansão de Taylor sem requerer o cálculo de derivadas superiores. Os métodos de Runge-Kuta possuem três propriedades gerais: 1- São métodos de passo único, ou seja, para encontrar yi+1 preciamos apenas da informação do ponto anterior (xi,yi) 2- Concordam com a expansão de Taylor até ao termo hp, onde p é a ordem do método 3- Não requer qualquer cálculo das derivadas de f(x,y), apenas da própria função Existem muitas variações, que podem ser colocadas na fórmula geral yi+1 = yi + m(xi,yi,h) h onde m(xi,yi,h) é a função de incremento que pode ser interpretada como o declive representativo no intervalo. Na forma geral escreve-se como m = a1k1 + a2k2 + ... + ankn onde os a’s são constantes e os k’s são k1 = f(xi,yi) k2 = f(xi+p1h,yi+q11k1h) Métodos Computacionais 7 Equações Diferenciais k3 = f(xi+p2h,yi+q21k1h+q22k2h) ... kn = f(xi+pn-1h,yi+qn-1,1k1h+qn-1,2k2h+...+ qn-1,n-1kn-1h) Os k’s são relações de recorrência (o k1 entra na equação do k2, etc.) Existem vários tipos de métodos de Runge-Kuta que empregam diferente número de termos na função de incremento (especificado por n) Para n=1 temos o método de Euler. As constantes a’s e p’s são determinadas fazendo a equação inicial igual a termos da expansão de Taylor (ver literatura). Mas temos mais incógnitas que equações (temos de especificar à priori algumas variáveis!), temos um número infinito de soluções. Por exemplo, para n=2, função de incremento com dois termos, o resultado é exacto se a solução da equação diferencial for quadrática. Método de Runge-Kuta de segunda ordem yi+1 = yi + (a1k1+a2k2)h onde Métodos Computacionais 8 Equações Diferenciais k1 = f(xi,yi) k2 = f(xi+p1h,yi+q11k1h) Agora para o método de Heun yi+1 = yi + (k1+k2)h/2 onde k1 = f(xi,yi) k2 = f(xi+h,yi+hk1) E para o método melhorado do polígono yi+1 = yi + k2h onde k1 = f(xi,yi) k2 = f(xi+h/2,yi+hk1/2) Método de Ralston yi+1 = yi + (k1 + 2k2)h/3 onde k1 = f(xi,yi) k2 = f(xi+3h/4,yi+3hk1/4) Etc. Métodos Computacionais 9 Equações Diferenciais Método de Runge-Kuta de terceira ordem Para n=3, uma das hipóteses é yi+1 = yi + (k1+4k2+k3)h/6 onde k1 = f(xi,yi) k2 = f(xi+h/2,yi+k1h/2) k3 = f(xi+h,yi-k1h+2 k2h) Método de Runge-Kuta de quarta ordem É o mais popular. Existe um número infinito de versões, a seguinte é chamada o método de Runge-Kuta de quarta ordem clássico yi+1 = yi + (k1+2k2+2k3+k4) h/6 onde k1 = f(xi,yi) k2 = f(xi+h/2,yi+k1h/2) k3 = f(xi+h/2,yi+k2h/2) k4 = f(xi+h,yi+k3h) Métodos Computacionais 10 Equações Diferenciais E etc. para ordens superiores. Métodos Computacionais 11 Equações Diferenciais S ISTEMAS DE EQUAÇÕES Muitos problemas requerem a solução de um sistema de equações diferenciais simultâneas. Em geral escreve-se: dy1 f 1 ( x , y1 , y 2 ,..., y n ) dx dy 2 f 2 ( x , y1 , y 2 ,..., y n ) dx ... dy n f n ( x , y1 , y 2 ,..., y n ) dx É agora necessário conhecer as n condições iniciais para o valor inicial de x. Todos os métodos discutidos anteriormente para uma única equação se aplicam a um sistema. Têm de ser resolvidas simultaneamente. Métodos Computacionais 12 Equações Diferenciais C ONTROLO ADAPTATIVO DO TAMANHO DO PASSO Até aqui temos usado um passo constante para integrar a equação diferencial. Por vezes, quando a função é suave mas com alguma variação brusca no seu domínio, não é eficaz usar um passo constante: se usarmos um muito curto estamos a desperdiçar recursos na parte suave, um muito longo não descreve a variação brusca. É preciso um passo que se adapte à variação da função. Duplicação do passo Cada passo é usado duas vezes, uma como passo completo e outra como dois meios passos. Se a previsão para o passo completo é y1 e para os dois meios passos y2, a diferença é d = y2 - y1 Esta dá-nos uma estimativa do erro. Com esta estimativa podemos controlar o passo: aumentá-lo se o erro for pequeno ou diminui-lo no caso contrário. Em vez da duplicação do passo podem ainda usar-se duas estimativas de ordens diferentes, pelo método de Runge-Kuta, para determinar o erro. Métodos Computacionais 13 Equações Diferenciais Métodos de passo múltiplo Os métodos de um passo anteriores usam a informação de um único ponto xi para prever o valor de yi+1 noutro ponto xi+1. Os métodos de passo múltiplo usam a valiosa informação disponível de pontos anteriores. A curvatura das linha ligando esses pontos anteriores fornece-nos informação acerca da trajectória da solução. Métodos Computacionais 14 Equações Diferenciais