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 de Livros Relacionados