Método de Runge-Kutta

Ao verificar os diversos tipos de métodos numéricos para resolver equações diferenciais ordinárias verá que existe um pouco de liberdade para desenvolver os algoritmos. De fato, várias delas existem, cada um tendo pontos positivos e negativos, dependendo da aplicação. Um desses métodos bem conhecidos e amplamente utilizados, dentro da classe de métodos de equações diferencias, são os algoritmos de Runge-Kutta [2], que são apresentados em diferentes ordens de precisão. Desenvolveremos a versão de segunda ordem para dar a idéia da aproximação e então apresentaremos as equações para terceira e quarta ordem.

Para obter o algoritmo de Runge-Kutta de segunda ordem, podemos aproximar $ f$ da integral da equação 5.2.1 por uma expansão em série de Taylor sobre o ponto médio do intervalo de integração. Assim obteremos a equação 5.2.2, que é a forma simples de Euler (eq. 5.1.5).

$\displaystyle x_{n+1} = x_n + \int \limits_{t_n}^{t_{n+1}} f(t,x)dt$ (5.2.1)

$\displaystyle x_{n+1} = x_n + \Delta t\ f(t_{n+1/2},x_{n+1/2}) + \mathscr{O}(\Delta t^3)$ (5.2.2)

Embora pareça como se nós precisassemos conhecer o valor de $ x_{n+1/2}$ que aparece na $ f$ da equação 5.2.2, isso não é verdade. Uma vez que o termo do erro já é da ordem de $ \mathscr{O}(\Delta t^3)$, uma aproximação para $ x_{n+1}$ cujo erro é da ordem de $ \mathscr{O}(\Delta t^2)$, já é bom o suficiente. Este é apenas o erro que é fornecido pelo método de Euler simples. Assim, se definirmos $ k$ como sendo uma aproximação intermediária ao dobro da diferença entre $ x_{n+1/2}$ e $ x_n$, o procedimento dos dois passos seguintes nos dará $ x_{n+1}$ em termos de $ x_n$. Assim,

$\displaystyle k = \Delta t f(t_n,x_n)$ (5.2.3)

$\displaystyle x_{n+1} = x_n + \Delta t f(t_n + \frac{1}{2} \Delta t,x_n \frac{1}{2} k) + \mathscr{O}(\Delta t^3)$ (5.2.4)

A equação 5.2.4 é o algoritmo de Runge-Kutta de segunda ordem. Esta equação engloba a idéia geral de substituição de aproximações para os valores de $ x$ no lado direito das expressões implícitas envolvendo $ f$. São como as acuradas séries de Taylor ou outros métodos implícitos, mas não implica em restrições especiais de $ f$, como fácil diferenciabilidade ou linearidade em $ x$. A equação 5.2.4 exige o cálculo da $ f$ duas vezes para cada passo ao longo da evolução.

Os esquemas de Runge-Kutta de altas ordens podem ser obtidos de uma forma relativamente simples utilizando-se alguma de integração por quadratura, não discutidas aqui, mas facilmente obtidas nas referências da apostila. De qualquer forma, qualquer um dos tipos de quadraturas podem ser utilizados para aproximar a equação 5.2.1 através de somas finitas dos valores de $ f$. Assim

$\displaystyle x_{n+1} = x_n + \frac{\Delta t}{6} \left( f(t_n,x_n) + 4f(t_{n+1/2},x_{n+1/2}) + f(t_{n+1},x_{n+1}) \right ) + \mathscr{O}(\Delta t^5)$ (5.2.5)

O esquema para gerar aproximações sucessivas para $ x$ aparecem do lado direito da equação. O algoritmo de terceira ordem com erro local de $ \mathscr{O}(\Delta t^2)$ é:

$\displaystyle k_1 = \Delta t\ f(t_n,x_n)$    

$\displaystyle k_2 = \Delta t\ f(t_n + \frac{1}{2} \Delta t , x_n + \frac{1}{2} k_1)$    

$\displaystyle k_3 = \Delta t\ f(t_n + \Delta t,x_n - k_1 + 2 k_2)$    

$\displaystyle x_{n+1} = x_n + \frac{1}{6} (k_1 + k_2 + k_3) + \mathscr{O}(\Delta t^4)$ (5.2.6)

A equação 5.2.6 baseia-se na equação 5.2.5 e necessita calcular $ f$ três vezes por passo. Neste esquema, o algoritmo de quarta ordem exigirá que $ f$ seja avaliada quatro vezes em cada passo de integração e possuirá uma precisão local de $ \mathscr{O}(\Delta t^5)$, assim temos o algoritmo de Runge-Kutta de quarta ordem:

$\displaystyle k_1 = \Delta t\ f(t_n,x_n)$    

$\displaystyle k_2 = \Delta t\ f(t_n + \frac{1}{2} \Delta t , x_n + \frac{1}{2} k_1)$    

$\displaystyle k_3 = \Delta t\ f(t_n + \frac{1}{2} \Delta t , x_n + \frac{1}{2} k_2)$    

$\displaystyle k_3 = \Delta t\ f(t_n + \Delta t , x_n + k_3)$    

$\displaystyle x_{n+1} = x_n + \frac{1}{6} (k_1 + 2k_2 + 2k_3 + k_4) + \mathscr{O}(\Delta t^5)$ (5.2.7)

Fernando Sato 2009-11-11