Métodos de Runge-Kutta

Teoria Completa

Introdução

Mas que raios de método com nome estranho é esse? Seguinte, vem comigo.

Dos métodos numéricos que nós conhecemos que servem para calcular a solução aproximada de problemas de valor inicial (PVI), os métodos de Runge-Kutta são os mais utilizados.

Isso acontece, devido a sua simplicidade e precisão, bem próximo aos métodos de Taylor. Só que diferença é que ele é mais vantajoso, já que conseguimos fugir daquelas derivadas de ordem elevada, que além de ser mega complicado de resolver, exigiria um esforço gigante computacional.

E muito pelo contrário, é um método baseado em avaliar a função f ( x , y ) em alguns pontos. Os métodos de Runge-Kutta simplesmente pegam as coisas boas do método de série de Taylor e tiram as derivadas haha. Show de bola né?

E eles tem três propriedades principais:

  1. São de passo 1;
  2. Não precisa calcular derivada nenhuma! No lugar, calculamos f x , y ou f t , y ;
  3. A fórmula do método concorda com a do método de série de Taylor até os termos da ordem do método.

Pela propriedade 3 deu pra perceber que esse método tem diferentes ordens né? Vamos dar uma olhada nelas!

Métodos de 1ª ordem

O método de Runge-Kutta de primeira ordem é o mais simples. Não tem muitos parâmetros para determinar, e coincide com o método de Euler e também com o de Taylor de ordem 1.

Hmmm... como assim?

A série de Taylor de primeira ordem fica assim:

y n + 1 = y n + h y n '

Como vimos ali encima, a diferença do método de Runge-Kutta (RK) para o método de Taylor é que em RK nós simplesmente tiramos a derivada e trocamos por f t n , y n :

y n + 1 = y n + h f ( t n , y n )

Reconheceu? É o método de Euler! Coisa que nós já conhecemos bem!

Métodos de 2ª ordem

Os métodos de Runge-Kutta de segunda ordem têm a seguinte fórmula geral:

y n + 1 = y n + h α 1 f t n , y n + h α 2 f t n + h β 1 , y n + h β 2 f t n , y n

Eita! Ta feio isso né? Podemos substituir aí α 1 = α 2 = 1 2 e β 1 = β 2 = 1 . Vai ficar mais ou menos assim:

y n + 1 = y n + h 2 f t n , y n + f t n + 1 , y n + h f t n , y n

Não sei pra você.... mas isso me lembra alguma coisa! O método de Euler Aperfeiçoado... pois é, é mais um método de Runge-Kutta que nós conhecemos bem.

Só pra recapitular, tem umas condições pra que nosso atual método (RK) combine com o ex (Série de Taylor de 2ª ordem) hahahahaha.

Vamos precisar que:

α 1 + α 2 = 1 α 2 β 1 = 1 2 α 1 β 2 = 1 2

Seguindo essas condições, existem infinitos métodos além do de Euler Aperfeiçoado que são métodos de Runge-Kutta de 2ª ordem.

Métodos de ordem superior

Existem métodos de Runge-Kutta para a ordem que quisermos, vamos dar uma olhadinha em 3ª e 4ª ordem:

3ª ordem:

y n + 1 = y n + 2 9 k 1 + 1 3 k 2 + 4 9 k 3

k 1 = h f t n , y n

k 2 = h f t n + h 2 , y n + k 1 2

k 3 = h f t n + 3 4 h , y n + 3 4 k 2

O método de RK de quarta ordem é bem popular, tem uma abordagem parecida com o de Euler modificado, já que ele deseja desenvolver várias estimativas para a inclinação e utiliza a média para melhorar o intervalo.

4ª ordem:

y n + 1 = y n + 1 6 k 1 + 2 k 2 + 2 k 3 + k 4

k 1 = h f t n , y n

k 2 = h f t n + h 2 , y n + k 1 2

k 3 = h f t n + h 2 , y n + k 2 2

k 4 = h f t n + h , y n + k 3

É isso aí, meio ruim de gravar né? Pode ser que seu professor nem cobre ou ensine esses de ordem mais alta, mas é melhor prevenir haha.

O grande problema, é que depois da 4ª ordem aumenta a complexidade computacional.

Considerações finais

Apesar dos métodos de Runge-Kutta corrigirem um problema que é o cálculo de derivadas, eles não são perfeitos. Temos a desvantagem de não existir uma maneira simples de estimarmos o erro, portanto pode ser difícil escolher um h .

Para a nossa sorte, 99% das vezes esse h é dado e não precisamos entrar nessa parte de estimação de erros 😉

Algoritmo

Então, o que fazemos aqui é simplesmente adicionar mais termos a medida que aumentamos a ordem! Então uma possibilidade pra implementar esses métodos seria pegar o algoritmo do método de Euler Aperfeiçoado e só mudar a função de iteração, sem muito mistério.

Expandir

Exercício Resolvido #1

Lista 7 – Professora Juliana – UFRJ – Questão 2 Adaptada

Dado o problema de valor inicial

y ' = x 2 + 2 y x y 1 = 2

Determine uma aproximação para y 1.3 , com h = 0.3 usando o método de Runge-Kutta de 4ª ordem.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Temos o seguinte:

y ' = x 2 + 2 y x

y 0 = 2

x 0 = 1

E com passo h = 0 . 3 precisaremos de apenas uma iteração para aproximar y 1.3 :

y 1 ≅ y 1.3

Agora é só jogar na fórmula:

Iteração 1 x = 1.3 :

k 1 0 = h f x 0 , y 0 = h x 0 2 + 2 y 0 x 0 = 1.5

k 2 0 = h f x 0 + h 2 , y 0 + k 1 0 2 = h x 0 + h 2 2 + 2 y 0 + k 1 0 2 x 0 + h 2 = 1.77978

k 3 0 = h f x 0 + h 2 , y 0 + k 2 0 2 = h x 0 + h 2 2 + 2 y 0 + k 2 0 2 x 0 + h 2 = 1.85276

k 4 0 = h f x 0 + h , y 0 + k 3 0 = h x 0 + h 2 + 2 y 0 + k 3 0 x 0 + h = 2.16820

y 1 = y 0 + 1 6 k 1 0 + 2 k 2 0 + 2 k 3 0 + k 4 0 = 3.82222

Passo 2

Então nossa aproximação é y 1.3 ≅ 3.82222 .

Resposta

y 1.3 ≅ 3.82222

Exercício Resolvido #2

Lista 7 – Professora Juliana – UFRJ – Questão 7 Adaptada

Aplique o método de Runge-Kutta de 4ª ordem à equação y ' = sin ⁡ x y tal que y 1 = 1 para calcular y 1.2 com h = 0.2 .

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

Temos o seguinte:

y ' = sin ⁡ x y

y 0 = 1

x 0 = 1

E com passo h = 0 . 2 precisaremos de apenas uma iteração para aproximar y 1 . 2 :

y 1 ≅ y 1 . 2

Agora é só jogar na fórmula:

Iteração 1 x = 1 . 2 :

k 1 0 = h f x 0 , y 0 = h sin ⁡ x 0 y 0 = 0.16829

k 2 0 = h f x 0 + h 2 , y 0 + k 1 0 2 = h sin ⁡ x 0 + h 2 y 0 + k 1 0 2 = 0.18586

k 3 0 = h f x 0 + h 2 , y 0 + k 2 0 2 = h sin ⁡ x 0 + h 2 y 0 + k 2 0 2 = 0.18657

k 4 0 = h f x 0 + h , y 0 + k 3 0 = h sin ⁡ x 0 + h y 0 + k 3 0 = 0.19785

y 1 = y 0 + 1 6 k 1 0 + 2 k 2 0 + 2 k 3 0 + k 4 0 = 1.18517

Passo 2

Então nossa aproximação é y 1 . 2 ≅ 1.18517 .

Resposta

y 1.2 ≅ 1.18517

Exercício Resolvido #3

Elaboração Própria

Considere o seguinte problema de valor inicial y ' = - y + t + 2 ,   y 0 = 2 ,   t ∈ 0,0.3 ,   h = 0.1 . Pede-se:

a Calcule uma aproximação para y 0.3 pelo método de Runge-Kutta de ordem 4 .

b Compare o resultado obtido com o valor exato y 0.3 dado pela solução y = e - t + t + 1 .

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

a Pelas informações que ele nos deu temos:

y ' = - y + t + 2

y 0 = 2

t 0 = 0

E com passo h = 0.1 teremos o seguinte:

Agora é só jogar na fórmula e ser feliz:

Iteração 1 x = 0.1 :

k 1 0 = h f t 0 , y 0 = h - y 0 + t 0 + 2 = 0

k 2 0 = h f t 0 + h 2 , y 0 + k 1 0 2 = h - y 0 + k 1 0 2 + t 0 + h 2 + 2 = 0.005