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

k 3 0 = h f t 0 + h 2 , y 0 + k 2 0 2 = h - y 0 + k 2 0 2 + t 0 + h 2 + 2 = 0.00475

k 4 0 = h f t 0 + h , y 0 + k 3 0 = h - y 0 + k 3 0 + t 0 + h + 2 = 0.009525

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

Iteração 2 x = 0.2 :

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

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

k 3 1 = h f t 1 + h 2 , y 1 + k 2 1 2 = h - y 1 + k 2 1 2 + t 1 + h 2 + 2 = 0.01381

k 4 1 = h f t 1 + h , y 1 + k 3 1 = h - y 1 + k 3 1 + t 1 + h + 2 = 0.01813

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

Iteração 3 x = 0.3 :

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

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

k 3 2 = h f t 2 + h 2 , y 2 + k 2 2 2 = h - y 2 + k 2 2 2 + t 2 + h 2 + 2 = 0.02202

k 4 2 = h f t 2 + h , y 2 + k 3 2 = h - y 2 + k 3 2 + t 2 + h + 2 = 0.02593

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

Ufa, chegamos na nossa aproximação!

y 0.3 ≅ 2.040818422

Passo 2

b O valor exato seria:

y t = e - t + t + 1

y 0.3 = 2.04081822068

Comparando esses dois valores temos como erro absoluto:

2.040818422 - 2.04081822068 = 2.0132 × 10 - 7

Resposta

y 0.3 ≅ 2.040818422

E A = 2.0132 × 10 - 7

Exercício Resolvido #4

Lista 6 – Professor Mauro – UFRJ – Questão 1 Adaptada

Determine a solução numérica aproximada da seguinte equação diferencial ordinária com passo h = 0.2 :

y ' + 2 y = 0 ,       ∀ x ∈ 0,1 y 0 = 1

a Usando o método de Runge-Kutta de 4ª ordem.

b Sabendo-se que a solução exata da equação é y = e - 2 x , compare com a solução aproximada obtida no item anterior.

MOSTRAR SOLUÇÃO COMPLETA

Passo 1

a Temos:

y ' = - 2 y

y 0 = 1

x 0 = 0

E com passo h = 0.2 teremos o seguinte:

Agora é só jogar na fórmula:

Iteração 1 x = 0.2 :

k 1 0 = h f x 0 , y 0 = h - 2 y 0 = - 0.4

k 2 0 = h f x 0 + h 2 , y 0 + k 1 0 2 = h - 2 y 0 + k 1 0 2 = - 0.32

k 3 0 = h f x 0 + h 2 , y 0 + k 2 0 2 = h - 2 y 0 + k 2 0 2 = - 0.336

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

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

Iteração 2 x = 0 . 4 :

k 1 1 = h f x 1 , y 1 = h - 2 y 1 = - 0.26816

k 2 1 = h f x 1 + h 2 , y 1 + k 1 1 2 = h - 2 y 1 + k 1 1 2 = - 0.21453

k 3 1 = h f x 1 + h 2 , y 1 + k 2 1 2 = h - 2 y 1 + k 2 1 2 = - 0.22525

k 4 1 = h f x 1 + h , y 1 + k 3 1 = h - 2 y 1 + k 3 1 = - 0.17806

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

Iteração 3 x = 0 . 6 :

k 1 2 = h f x 2 , y 2 = h - 2 y 2 = - 0.17977

k 2 2 = h f x 2 + h 2 , y 2 + k 1 2 2 = h - 2 y 2 + k 1 2 2 = - 0.14382

k 3 2 = h f x 2 + h 2 , y 2 + k 2 2 2 = h - 2 y 2 + k 2 2 2 = - 0.15101

k 4 2 = h f x 2 + h , y 2 + k 3 2 = h - 2 y 2 + k 3 2 = - 0.11937

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

Iteração 4 x = 0.8 :

k 1 3 = h f x 3 , y 3 = h - 2 y 3 = - 0.12052

k 2 3 = h f x 3 + h 2 , y 3 + k 1 3 2 = h - 2 y 3 + k 1 3 2 = - 0.09642

k 3 3 = h f x 3 + h 2 , y 3 + k 2 3 2 = h - 2 y 3 + k 2 3 2 = - 0.10124

k 4 3 = h f x 3 + h , y 3 + k 3 3 = h y 3 + k 3 3 = - 0.08003

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

Iteração 5 x = 1 :

k 1 4 = h f x 4 , y 4 = h - 2 y 4 = - 0.08080

k 2 4 = h f x 4 + h 2 , y 4 + k 1 4 2 = h - 2 y 4 + k 1 4 2 = - 0.06464

k 3 4 = h f x 4 + h 2 , y 4 + k 2 4 2 = h - 2 y 4 + k 2 4 2 = - 0.06787

k 4 4 = h f x 4 + h , y 4 + k 3 4 = h - 2 y 4 + k 3 4 = - 0.05365

y 5 = y 4 + 1 6 k 1 4 + 2 k 2 4 + 2 k 3 4 + k 4 4 = 0.13542

Beleza, agora podemos completar nossa tabelinha!