Método de Euler Aperfeiçoado

Ver Todos os Exercícios

Teoria

E aí meus caros, bora entender mais um assuntinho de numérico envolvendo resolução de EDO´s. Espero que você ainda lembre do método de Euler, pois vamos continuar falando dele.

Então chega mais, que aqui é só sucesso!

Antes de começas, é importante saber que esse método pode ter outros nomes conhecidos: método de Euler modificado e método de Heun.

Vamos dar uma olhadinha aqui, só pra relembrar. O método de Euler é um método iterativo, ou seja, onde uma etapa do cálculo depende da anterior até que a gente chegue no resultado. Tranquilo né?

O método de Euler tenta aproximar o valor exato da função y ( t n ) através da reta tangente no ponto ( t n , y ( t n ) ) mais ou menos assim:

y - y 0 = m ( t - t 0 )

Esse valor m   é a inclinação da reta tangente, e dentro do cálculo, a função que tem a ver com a reta tangente é??? Isso mesmo, a derivada. Então m y ' ( t 0 ) =   f ( x 0 ,   y 0 ) . Isso é uma informação importantíssima e você já vai sacar o motivo!

Se liga só:

Fazendo algumas considerações tipo: que o passo h será uniforme h = t - t 0 , entre pontos t 1   ,   t 2 …   t n , dentro de um intervalo temos: y n + 1 = y n + h f ( t n , y n )

Basicamente, no método de Euler convencional

Maaaaaaaaaaas, esse assunto é para falar do método de Euler Aperfeiçoado, então meu consagrado, vamos melhorar esse negócio.

O método convencional utilizava uma retinha tangente e tals, e nesse vamos fazer o que????????

Aqui nós determinamos duas derivadas (ou seja, duas retas tangentes) para o intervalo, uma no ponto inicial e outra no ponto final.

E qual das duas nós usamos no cálculo? As duas ué, só que nesse caso nós pegamos a média entre elas.

Veja que h 1 é a inclinação no início do intervalo e h 2 no final do intervalo. Vamos adicionar algumas coisas nela e deixar assim oh:

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

Lembrando que f t n , y n = y n ' !

Até aí tudo bem né? Nós só acrescentamos uma tangente a mais.

E o erro vai ser o seguinte:

E x = h 2 3 ! y ' ' ' ξ x

Mas, é aquela velha história, que interessa mesmo pra gente é o limitante do erro:

E x ≤ h 2 3 ! M 3

onde M 3 é o valor máximo (aplicado ao intervalo) da terceira derivada.

M 3 = max x ∈ x 0 , x ⁡ f ' ' ' x .

Só pra ter certeza que ficou tudo cristalino vamos ver um exemplo. Resolve aí!

y ' - 3 y + 5 - t 2 = 0

0 ≤ t ≤ 1

y 0 = 1

h = 0.2

Começamos isolando nosso y ' :

y ' = f t n , y n = 3 y - 5 + t 2

E temos que t n + 1 = t n + h . Agora jogamos na fórmula:

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

Agora para não ficar muito embolado eu recomendo resolver separadamente:

y 0 + h f t 0 , y 0 = y 0 + h 3 y 0 - 5 + t 0 2 = 1 + 0.2 3 1 - 5 + 0 2 = 0.6

f t 1 , y 0 + h f t 0 , y 0 = f 0.2,0.6 = 3 0.6 - 5 + 0.2 2 = - 3.16

f t 0 , y 0 = 3 y 0 - 5 + t 0 2 = 3 1 - 5 + 0 2 = - 2

Juntando tudo:

y 1 = y 0 + h 2 f t 0 , y 0 ⏟ - 2 + f t 1 , y 0 + h f t 0 , y 0 ⏟ - 3.16 = 1 + 0.1 - 5.16 = 0.484

Então acabamos de descobrir que y 0.2 = 0.484 !

Para achar os outros é só continuar o processo 😉

Algoritmo

O algoritmo não vai mudar muito do de Euler normal não. Só precisamos adicionar aquela parcela.

Passo 1. Dados iniciais (o que seu programa vai receber de você):

  1. Passo h
  2. Intervalo em que vamos estimar f , x 0 , x f
  3. Valor inicial y 0

Passo 2. Definimos um vetor y onde vamos guardar as estimativas de f , de modo que y 0 = y 0

Passo 3. Definimos um vetor x formado pelos pontos onde vamos estimar as derivadas.

Passo 4. Definimos n = x f - x 0 h

Passo 5. Para i de 0 a n - 1 repita os passos 6 e 7.

Passo 6. k = y i + h f x i , y i

Passo 7. y i + 1 = y i + h 2 f x i , y i + f x i + h , k

Pra finalizar é só retornar o vetor y ! Fica a dica também que existem diferentes entradas possíveis para esse método. As que eu usei são só um exemplo. Você poderia entrar, por exemplo, com o x 0 , o passo h e o valor n ao invés de entrar com o intervalo. Outra opção era entrar diretamente com o vetor x pronto. Nesse caso não seria necessário dar nem o passo nem o intervalo.

Algoritmo

Exercícios Resolvidos

Exercício Resolvido #1

Determine uma aproximação para y 1 na seguinte Equação Diferencial Ordinária, com o passo h = 0.2 pelo método de Euler Aperfeiçoado:

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

Passo 1

Pelas informações que ele nos deu 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 e ser feliz:

y n + 1 = y n + h 2 f x n , y n ⏟ k 1 n + f x n + 1 , y n + h f x n , y n ⏟ k 2 n

Iteração 1 x = 0.2 :

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

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

y 1 = y 0 + h 2 k 1 0 + k 2 0 = 0.68

Iteração 2 x = 0.4 :

k 1 1 = f x 1 , y 1 = - 2 y 1 = - 1.36

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

y 2 = y 1 + h 2 k 1 1 + k 2 1 = 0.4624

Iteração 3 x = 0.6 :

k 1 2 = f x 2 , y 2 = - 2 y 2 = - 0.9248

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

y 3 = y 2 + h 2 k 1 2 + k 2 2 = 0.31443

Iteração 4 x = 0.8 :

k 1 3 = f x 3 , y 3 = - 2 y 3 = - 0.62886

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

y 4 = y 3 + h 2 k 1 3 + k 2 3 = 0.21381

Iteração 5 x = 1 :

k 1 4 = f x 4 , y 4 = - 2 y 4 = - 0.42763

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

y 5 = y 4 + h 2 k 1 4 + k 2 4 = 0.14539

Passo 2

Ufa, chegamos na nossa aproximação!

y 1 ≅ 0.14539

Resposta

y 1 ≅ 0.14539

Exercício Resolvido #2

Determine uma aproximação para y 1.2 sabendo que y x é solução da equação diferencial:

y ' = y 2 + x y 1 = 1

usando o método de Euler aperfeiçoado, com h = 0.1

Passo 1

Temos que:

y ' = y 2 + x

y 0 = 1

x 0 = 1

E com passo h = 0.1 teremos o seguinte:

Aplicando a fórmula:

y n + 1 = y n + h 2 f x n , y n ⏟ k 1 n + f x n + 1 , y n + h f x n , y n ⏟ k 2 n

Iteração 1 x = 1.1 :

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

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

y 1 = y 0 + h 2 k 1 0 + k 2 0 = 1.227

Iteração 2 x = 1.2 :

k 1 1 = f x 1 , y 1 = y 1 2 + x 1 = 2.60553

k 2 1 = f x 2 , y 1 + h k 1 1 = y 1 + h k 1 1 2 + x 2 = 3.41281

y 2 = y 1 + h 2 k 1 1 + k 2 1 = 1.52792

Passo 2

Pronto, nossa aproximação é:

y 1.2 ≅ 1.52792

Resposta

y 1.2 ≅ 1.52792

Exercício Resolvido #3

Dado o P V I :

y ' = x 2 y - y y 0 = 1

Calcule uma aproximação para y 0.5 com h = 0.25 usando o método de Euler Aperfeiçoado.

Passo 1

Temos:

y ' = x 2 y - y

y 0 = 1

x 0 = 0

E com passo h = 0.25 teremos o seguinte:

Só jogar na fórmula e fim de papo:

y n + 1 = y n + h 2 f x n , y n ⏟ k 1 n + f x n + 1 , y n + h f x n , y n ⏟ k 2 n

Iteração 1 x = 0.2 5 :

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

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

y 1 = y 0 + h 2 k 1 0 + k 2 0 = 0.78711

Iteração 2 x = 0 . 5 :

k 1 1 = f x 1 , y 1 = x 1 2 y 1 - y 1 = - 0.73792

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

y 2 = y 1 + h 2 k 1 1 + k 2 1 = 0.63837

Passo 2

E chegamos na nossa aproximação:

y 0.5 ≅ 0.63837

Resposta

y 0.5 ≅ 0.63837

Exercício Resolvido #4

Dado o P V I : y ' = 4 - 2 x ,   y 0 = 2 . Considere h = 0.25 e h = 0.1 .

a Encontre uma aproximação para y 0.5 usando o método de Euler Aperfeiçoado para cada h .

b Compare seus resultados com a solução exata dada por y x = - x 2 + 4 x + 2 .

Passo 1

a Temos o seguinte:

y ' = 4 - 2 x

y 0 = 2

x 0 = 0

E com passo h = 0.25 teremos o seguinte:

Aplicando a formuleta:

y n + 1 = y n + h 2 f x n , y n ⏟ k 1 n + f x n + 1 , y n + h f x n , y n ⏟ k 2 n

Iteração 1 x = 0.25 :

k 1 0 = f x 0 , y 0 = 4 - 2 x 0 = 4

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

y 1 = y 0 + h 2 k 1 0 + k 2 0 = 2.9375

Iteração 2 x = 0.5 :

k 1 1 = f x 1 , y 1 = 4 - 2 x 1 = 3.5

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

y 2 = y 1 + h 2 k 1 1 + k 2 1 = 3.75

Logo, temos y 0.5 ≅ 3.75

Passo 2

Agora com h = 0.1 :

Iteração 1 x = 0.1 :

k 1 0 = f x 0 , y 0 = 4 - 2 x 0 = 4

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

y 1 = y 0 + h 2 k 1 0 + k 2 0 = 2.39

Iteração 2 x = 0.2 :

k 1 1 = f x 1 , y 1 = 4 - 2 x 1 = 3.8

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

y 2 = y 1 + h 2 k 1 1 + k 2 1 = 2.76

Iteração 3 x = 0.3 :

k 1 2 = f x 2 , y 2 = 4 - 2 x 2 = 3.6

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

y 3 = y 2 + h 2 k 1 2 + k 2 2 = 3.11

Iteração 4 x = 0.4 :

k 1 3 = f x 3 , y 3 = 4 - 2 x 3 = 3.4

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

y 4 = y 3 + h 2 k 1 3 + k 2 3 = 3.44

Iteração 5 x = 0.5 :

k 1 4 = f x 4 , y 4 = 4 - 2 x 4 = 3.2

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

y 5 = y 4 + h 2 k 1 4 + k 2 4 = 3.75

E nossa aproximação aqui vai ficar:

y 0.5 ≅ 3.75

Passo 3

A solução exata é:

y x = - x 2 + 4 x + 2