Método de Euler

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Iustração do método de Euler. A curva desconhecida está em azul, e sua aproximação polinomial está em vermelho.

Em matemática e ciência computacional, o método de Euler, cujo nome relaciona-se com Leonhard Euler, é um procedimento numérico de primeira ordem para solucionar equações diferenciais ordinárias com um valor inicial dado. É o tipo mais básico de método explícito para integração numérica para equações diferenciais ordinárias.

Formulação do Método de Euler[editar | editar código-fonte]

Suponha que queremos aproximar a solução de um problema de valor inicial:

y'(t) = f(t,y(t)), \qquad \qquad y(t_0)=y_0.

Escolhendo um valor para h para o tamanho de cada passo e atribuindo a cada passo um ponto dentro do intervalo, temos que t_n = t_0 + nh. Nisso, o próximo passo t_{n+1} a partir do anterior t_n fica definido como t_{n+1} = t_n + h, então: [1]

 y_{n+1} = y_n + hf(t_n,y_n). Com isso, para um valor menor de h teremos mais passos dentro de um dado intervalo, mas que terá melhor aproximação com o valor analítico.

O valor de y_n é uma aproximação da solução da EDO no ponto t_n: y_n \approx y(t_n). O Método de Euler é explícito, ou seja, a solução y_{n+1} é uma função explícita de y_i para i \leq n.

Enquanto o Método de Euler integra uma EDO de primeira ordem, qualquer EDO de ordem N pode ser representada como uma equação de primeira ordem: tendo a equação

 y^{(N)}(t) = f(t, y(t), y'(t), \ldots, y^{(N-1)}(t)) ,

temos a introdução de variáveis auxiliares z_1(t)=y(t), z_2(t)=y'(t),\ldots, z_N(t)=y^{(N-1)}(t) obtendo a seguinte equação:

 \mathbf{z}'(t)
  = \begin{pmatrix} z_1'(t)\\ \vdots\\ z_{N-1}'(t)\\ z_N'(t) \end{pmatrix}
  = \begin{pmatrix} y'(t)\\ \vdots\\ y^{(N-1)}(t)\\ y^{(N)}(t) \end{pmatrix}
  = \begin{pmatrix} z_2(t)\\ \vdots\\ z_N(t)\\ f(t,z_1(t),\ldots,z_N(t)) \end{pmatrix}

Este é um sistema de primeira ordem na variável \mathbf{z}(t) e pode ser usada através do Método de Euler ou qualquer outros métodos de resoluções de sistemas de primeira ordem.[2]

Exemplo[editar | editar código-fonte]

Dado o problema de valor inicial

y'=y, \quad y(0)=1,

vamos usar o método de Euler para aproximar y(4).[3]

Usando um passo igual à 1 (h = 1)[editar | editar código-fonte]

Ilustração da integração numérica para o exemplo y'=y, y(0)=1. A curva em Azul é o método de Euler com h = 1.0.; em Verde, o ponto médio e em Vermelho, o valor exato da solução, y=e^t.

O método de Euler é

 y_{n+1} = y_n + hf(t_n,y_n).  \qquad \qquad

Primeiramente devemos aplicar o ponto f(t_0, y_0). Nesse exemplo, a função f é definida por f(t,y) = y. Nisso, temos que

 f(t_0,y_0) = f(0,1) = 1. \qquad \qquad

Através do passo acima, vemos que a declividade da linha é tangente à solução da curva no ponto (0,1). Lembre que a declidade é definida como a variação numérica de y em relação a t, ou  \Delta y/ \Delta t.

O próximo passo é multiplicar o valor acima pelo tamanho do passo h, que nesse caso resultará em:

 h \cdot f(y_0) = 1 \cdot 1 = 1. \qquad \qquad

Como o tamanho do passo é a variação em t, quando multiplicamos esse passo pela declividade da tangente, resultamos em um novo valor para y. Esse valor é então colocado ao valor de y inicial, com o objetivo de obtermos o próximo valor para ser usado de modo recursivo.

 y_0 + hf(y_0) = y_1 = 1 + 1 \cdot 1 = 2. \qquad \qquad

Os passos acima devem ser repetidos para assim encontrarmos  y_2, y_3 and y_4.

 \begin{align}
y_2 &= y_1 + hf(y_1) = 2 + 1 \cdot 2 = 4, \\
y_3 &= y_2 + hf(y_2) = 4 + 1 \cdot 4 = 8, \\
y_4 &= y_3 + hf(y_3) = 8 + 1 \cdot 8 = 16.
\end{align}

Como isso se torna um processo repetitivo, uma boa forma de organizar cada iteração em forma de tabela, evitando a possibilidade de erros.

n y_n t_n f(t_n,y_n) h \Delta y y_{n+1}
0 1 0 1 1 1 2
1 2 1 2 1 2 4
2 4 2 4 1 4 8
3 8 3 8 1 8 16

A conclusão desse método é de que  y_4 = 16 , enquanto a solução exata da equação diferencial é  y(t) = e^t , então  y(4) = e^4 \approx 54,598 . Nesse caso, a aproximação por Método de Euler não é muito eficiente, porém podemos ver na imagem que o comportamento de ambas as curvas são semelhantes.

Usando outros tamanhos para h[editar | editar código-fonte]

A mesma ilustração para h = 0.25.

Como mostrado no início, o método possui sua aproximação aprimorada quando tomamos valores cada vez menores para h. A tabela abaixo mostra o resultado para diferentes tamanhos de h. A primeira linha são os valores para h = 1, conforme descrito no tópico anterior. Já a segunda linha é para h = 0,25, conforme ilustrado ao lado.

Tamanho de h Resultado do Método de Euler Erro Absoluto
1 16 38,598
0,25 35,53 19,07
0,1 45,26 9,34
0,05 49,56 5,04
0,025 51,98 2,62
0,0125 53,26 1,34

O erro absoluto é a diferença entre o valor obtido por Euler e o valor exato da solução para  t = 4 . Podemos ver que, ao ponto que o valor de h vai caindo pela metade a cada linha, o erro aproximadamente possui o mesmo comportamento. Isso sugere que o erro absoluto é relativamente proporcional ao tamanho do passo de cada iteração adotado. Essa notação perde a validade para passos muito pequenos, mas geralmente é válida em demais equações; consulte Erro de truncamento para mais detalhes.

Em outros métodos ilustrados, como o Método dos Pontos Médios neste caso mostraram-se mais razoáveis, pois este possui uma precisão proporcional quadrática do tamanho do passo. Por essa razão, tem-se o Método de Euler como um método de primeira ordem, enquanto o Método dos Pontos Médios é dito como de segunda ordem.

Podemos extrapolar a tabela acima se precisamos de uma melhor precisão através da escolha de valores como  h = 0,00001 que, para chegar em  t = 4, necessitamos de 400.000 passos. Esse método demanda, portanto, um grande custo computacional; com isso, usam-se métodos com maior ordem de precisão, como o Método de Runge-Kutta, quando uma grande aproximação é necessária.[4]

Método de Euler Contra métodos de ordem maior[editar | editar código-fonte]

A ordem de um método mede o quanto rápidamente este converge para a solução analítica quando se diminui os passos na integração numérica [5] . Infelizmente devido a limitações computacionais, erros de arrendodamente cresce quando se diminui o tamanho dos passos, ocorrendo até mesmo divergência ou mesmo valores errados. Uma forma de resolver este problema é aumentar a ordem do método numérico. Por exemplo métodos de ordem maiores incluem método de Runge-Kutta e o método de Euler melhorado.

Notas[editar | editar código-fonte]

  1. Butcher 2003, p. 45; Hairer, Nørsett & Wanner 1993, p. 36
  2. Butcher 2003, p. 3; Hairer, Nørsett & Wanner 1993, p. 2
  3. Veja Também Atkinson 1989, p. 344
  4. Hairer, Nørsett & Wanner 1993, p. 40
  5. Devries, Paul L. ; Hasbun, Javier E. A first course in computational physics. Second edition. Jones and Bartlett Publishers: 2011.

Ver também[editar | editar código-fonte]