| | | |

Matemática numérica II

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

4.4 Método de Euler implícito

Seja o PVI

y′=f⁢(t,y),t0<t≤tf, (4.206)
y⁢(t0)=y0, (4.207)

com dados t0,tf∈ℝ e y0∈ℝ, sendo a função y=y⁢(t) a incógnita.

Consideramos a discretização no tempo t(k):=t0+h⁢k, k=0,1,2,…,n, com passo h:=(tf−t0)/n. De (4.206)-(4.207) e do teorema fundamental do cálculo temos

y⁢(t(k+1))=y⁢(t(k))+∫t(k)t(k+1)f⁢(t,y)⁢𝑑t. (4.208)

A integral pode ser aproximada por

∫t(k)t(k+1)f⁢(t,y)⁢𝑑t≈h⁢f⁢(t(k+1),y(k+1)) (4.209)

donde obtemos

y⁢(t(k+1))≈y⁢(t(k))+h⁢f⁢(t(k+1),y(k+1)). (4.210)

Isto nos motiva a iteração do método de Euler implícito999Leonhard Paul Euler, 1707-1783, matemático e físico suíço. Fonte: Wikipédia: Leonhard Euler.

y(0)=y0, (4.211)
y(k+1)=y(k)+h⁢f⁢(t(k+1),y(k+1)), (4.212)

sendo y(k)≈y⁢(t(k)), k=0,1,2,…,n.

Exemplo 4.4.1.

Consideremos o seguinte PVI

y′−y=sen⁡(t),t>0 (4.213)
y⁢(0)=12. (4.214)

Na Tabela 4.6, temos as aproximações y~⁢(1)≈y⁢(1) computadas pelo Método de Euler Implícito com diferentes passos h.

h y~⁢(1) |y~⁢(1)−y⁢(1)|
10−1 2.23660 2.1⁢e−1
10−2 2.04660 1.9⁢e−2
10−3 2.02930 1.9⁢e−3
10−4 2.02759 1.9⁢e−4
10−5 2.02741 1.9⁢e−5
10−6 2.02740 1.9⁢e−6
Tabela 4.6: Resultados referentes ao Exemplo 4.4.1
Código 12: eulerImp.py
1import numpy as np
2from scipy.optimize import fsolve
3
4def eulerimp(f, t0, y0, h, n):
5 t = t0
6 y = y0
7 for k in range(n):
8 y = fsolve(lambda x:
9 x - y - h*f(t+h, x),
10 x0 = y, xtol=1e-14)[0]
11 t += h
12 return t, y
13
14def f(t, y):
15 return y + np.sin(t)
16
17# analítica
18def exata(t):
19 return np.exp(t) - 0.5*np.sin(t) - 0.5*np.cos(t)
20
21h = 1e-1
22n = round(1./h)
23t,y = eulerimp(f, 0., 0.5, h, n)
24print(f'{h:.1e}: {y:.5e} {np.abs(y-exata(1)):.1e}')

4.4.1 Análise Numérica

O Método de Euler Implícito é O⁢(h). De fato, tomando o polinômio de Taylor

y⁢(t)=y⁢(t+h)−h⁢f⁢(t+h,y⁢(t+h))+O⁢(h2), (4.215)

temos

τ⁢(t,y;h):=Δ⁢(t,y;h)−Φ⁢(t,y;h) (4.216)
=y⁢(t+h)−y⁢(t)h⏟:=Δ−f⁢(t+h,y⁢(t+h);h)⏟:=Φ (4.217)
=O(h). (4.218)

Estabilidade

Um método é dito ser estável quando pequenas perturbações na condição inicial produzem pequenas alterações nas aproximações subsequentes, i.e. os resultados dependem continuamente dos dados iniciais.

Exemplo 4.4.2.

Consideramos o seguinte PVI

y′=−40⁢y⁢,0<t≤1, (4.219)
y⁢(0)=13. (4.220)

A solução exata é y⁢(t)=15⁢e−40⁢t. Na tabela abaixo, temos os resultados obtidos por computações com o Método de Euler (Explícito, y~e) e o Método de Euler Implícito (y~i) para h=10−1 e 10−2.

h |y~e⁢(1)−y⁢(1)| |y~i⁢(1)−y⁢(1)|
10−1 2.0⁢e+04 3.8⁢e−08
10−2 1.4⁢e−18 8.1⁢e−16

Estabilidade do Euler Explícito

Consideramos o PVI

y′=λ⁢y,t>0, (4.221)
y⁢(0)=y0, (4.222)

para dados λ<0 e y0∈ℝ.

A iteração do Método de Euler Explícito para este PVI consiste em

y(0)=y0, (4.223)
y(k+1)=y(k)+h⁢λ⁢y(k), (4.224)

donde temos

y(k+1)=(1+h⁢λ)k+1⁢y0. (4.225)

Tendo em vista a solução exata y⁢(t)=y0⁢eλ⁢t, temos que o erro global é

|y⁢(t(k))−y(k)|=|y0⁢eλ⁢h⁢k−y0⁢(1+h⁢λ)k| (4.226)
=|(eλ⁢h)k−(1+hλ)k||y0| (4.227)

e, portanto, a exatidão é determinada por quão bem 1+h⁢λ aproxima eλ⁢h. Observamos que, para qualquer λ<0, (eλ⁢h)k→0 quando t→∞. Por outro lado, para y(k)→0, quando t→0, é necessário que |1+h⁢λ|<1, i.e. o passo do Método de Euler fica restrito

h<2|λ| (4.228)

Supondo um erro de arredondamento δ0 (apenas) na condição inicial, as aproximações subsequentes do Método de Euler Explícito ficariam

y(k+1)=(1+h⁢λ)k+1⁢(y0+δ0), (4.229)

donde temos que

δ(k)=(1+h⁢λ)k⁢δ0 (4.230)

é o valor propagado de δ0 na k-ésima iteração. Ou seja, quando |1+h⁢λ|>1, temos que δ(k)→∞ quando k→∞ e o método é instável. Concluímos que o Método de Euler Explícito é estável para

h<2|λ|. (4.231)

Estabilidade do Euler Implícito

O Método de Euler Implícito é incondicionalmente estável. Para o PVI (4.221)-(4.222), o método produz as aproximações

y(k)=(1−h⁢λ)−k⁢y0. (4.232)

Aqui, para qualquer λ<0, temos que

(1−h⁢λ)−k→0,k→∞, (4.233)

para qualquer escolha do passo h>0. Isto mostra a estabilidade incondicional do método. Também, o E.4.4.7 mostra que o método é convergente para o PVI (4.221)-(4.222).

4.4.2 Exercícios

E. 4.4.1.

Considere o seguinte problema de valor inicial

y′=y+1, 0<t≤1, (4.234)
y⁢(0)=0, (4.235)

com solução exata y⁢(t)=et−1. Use o Método de Euler Implícito com h=10−1 para computar uma aproximação de y⁢(1). Então, verifique a ordem de convergência para diferentes passos h=10−1⁢,10−2⁢,10−3 e 10−4.


Dica.

y(k+1)=y(k)+h⁢f⁢(t(k+1),y(k+1)) (4.236)
y(k+1)=y(k)+h⁢(y(k+1)+1) (4.237)
y(k+1)=y(k)+h1−h. (4.238)
E. 4.4.2.

Considere o seguinte problema de valor inicial

y′=−50⁢y+50,0<t≤1, (4.239)
y⁢(0)=2, (4.240)

com solução exata y⁢(t)=1+e−50⁢t. Com h=10−1, compute a aproximação de y⁢(1) dada pelo

  1. a)

    Método de Euler Explícito.

  2. b)

    Método de Euler Implícito.

Por que os resultados são tão diferentes entre os métodos? Escolha um passo h em que ambos produzam resultados satisfatórios e justifique sua escolha.


Dica: consulte a condição de estabilidade (4.231).

E. 4.4.3.

Use o Método de Euler Implícito, com h=10−1, para computar aproximações para a solução do PVI discutido no Exemplo 4.1.1. Compare os resultados com aqueles apresentados com o Método de Euler Explícito.

E. 4.4.4.

O problema de valor inicial

y′=π⁢[cos2⁡(π⁢t)−sen2⁡(π⁢t)],t>0, (4.241)
y⁢(0)=0. (4.242)

tem solução analítica y⁢(t)=sen⁡(π⁢t)⁢cos⁡(π⁢t). Compute a aproximação y~⁢(1.5)≈y⁢(1.5) pelo Método de Euler Implícito com passo h=10−1 e forneça o erro ε:=|y~⁢(1.5,h)−y⁢(1.5)|.


y~⁢(1.5)=6.65400⁢e−1, ε=6.7⁢E−01

E. 4.4.5.

Use o Método de Euler Implícito para computar a solução de

y′=e2⁢t−2⁢y,0<t≤1, (4.243)
y⁢(0)=0. (4.244)

Escolha um passo h adequado de forma que y⁢(1) seja computado com precisão de 5 dígitos significativos.

E. 4.4.6.

Considere o seguinte problema de valor inicial

y′+e−y2+1=2,t>1, (4.245)
y⁢(1)=−1. (4.246)

Use o Método de Euler Implícito para computar o valor aproximado de y⁢(2) com precisão de 6 dígitos significativos.

Análise Numérica

E. 4.4.7.

Mostre que o Método de Euler Implícito é convergente para a solução exata do PVI (4.221)-(4.222) para qualquer λ<0.


y⁢(t(k))=y0⁢eλ⁢t(k) (4.247)
=y0limh→0+(1−hλ)−t(k)/h (4.248)
=y0limh→0+(1−hλ)−k (4.249)
=limh→0+y(k). (4.250)

Envie seu comentário

Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!

Opcional. Preencha seu nome para que eu possa lhe contatar.
Opcional. Preencha seu e-mail para que eu possa lhe contatar.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a política de uso de dados para mais informações.

Licença Creative Commons
Este texto é disponibilizado nos termos da Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional. Ícones e elementos gráficos podem estar sujeitos a condições adicionais.

Pedro H A Konzen
| | | |