| | | |

Matemática numérica II

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

4.5 Métodos de Passo Múltiplo

Seja um PVI

y′⁢(t)=f⁢(t,y⁢(t)),t0<t≤tf, (4.251)
y⁢(t0)=y0. (4.252)

Assumimos uma discretização uniforme no tempo t(k)=t0+k⁢h, com tamanho de passo h=(tf−t0)/n. Do Teorema Fundamental do Cálculo, temos

y⁢(t(k+i))=y⁢(t(k−j))+∫t(k−j)t(k+i)f⁢(s,y⁢(s))⁢𝑑s. (4.253)

A ideia é aproximar a integral por uma quadratura de Newton101010Isaac Newton, 1642 - 1727, matemático, físico, astrônomo, teólogo e autor inglês. Fonte: Wikipédia: Isaac Newton.-Cotes111111Roger Cotes, 1682 - 1716, matemático inglês. Fonte: Wikipédia: Roger Cotes.. Das regras121212Consulte as Notas de Aula: Matemática Numérica II: Integração: Regras de Newton-Cotes., temos

∫t(k−j)t(k+i)f⁢(s,y⁢(s))⁢𝑑s≈∑l=1mf⁢(s(l),y⁢(s(l)))⁢w(l), (4.254)

onde s(l) são os nodos e w(l) os pesos da quadratura, l=1,2,…,m.

4.5.1 Métodos de Adams-Bashforth

Métodos de Adams-Bashforth são métodos explícitos de passo múltiplo obtidos ao escolhermos j=0 e i=1 em (4.254), i.e.

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

Aplicando as regras de Newton-Cotes, escolhemos os nodos de quadratura s(l)=t(k−l+1), l=1,2,…,m, e, então

∫t(k)t(k+1)f⁢(s,y⁢(s))⁢𝑑s≈∑l=1mf⁢(s(l),y⁢(s(l)))⁢w(l), (4.256)

e

w(l)=∫t(k)t(k+1)∏p≠lp=1ms−s(p)s(l)−s(p)⁢d⁢s. (4.257)

Agora, fazendo a mudança de variável u=(s−t(k))/h, obtemos

w(l)=h⁢∫01∏p≠lp=1mu+p−1p−l⁢d⁢u (4.258)

Donde, obtemos o seguinte esquema numérico

y(k+1)=y(k)+h⁢∑l=1mw(l)⁢f⁢(t(k−l+1),y(k−l+1)), (4.259)

onde

w(l)=∫01∏p≠lp=1ms+p−1p−l⁢d⁢s. (4.260)
Observação 4.5.1.(Ordem de truncamento)

A ordem de truncamento de um Método de Adams-Bashforth de m-passos é O⁢(hm) [2].

Método de Adams-Bashforth de Ordem 2

Tomando m=2 em (4.260), temos

w(1)=∫01s+1⁢d⁢s=32 (4.261)

e

w(2)=∫01−s⁢d⁢s=−12. (4.262)

Então, de (4.259) temos a iteração do método de Adams-Bashforth de 2 passos:

y(0)=y0, (4.263)
y(1)=y~1, (4.264)
y(k+1)=y(k)+h2⁢[3⁢f⁢(t(k),y(k))−f⁢(t(k−1),y(k−1))], (4.265)

com t(k)=t0+k⁢h, h=(tf−t0)/n, k=0,1,2,…,n.

Exemplo 4.5.1.

Consideramos o seguinte PVI

y′−y=sen⁡(t),t>0 (4.266)
y⁢(0)=12. (4.267)

Na Tabela 4.7, temos as aproximações y~⁢(1) de y⁢(1) computadas pelo Método de Adams-Bashforth de 2 passos. Como este método é de ordem 2, escolhemos inicializá-lo pelo método do ponto médio, de forma a mantermos a consistência.

Tabela 4.7: Resultados referentes ao Exemplo 4.5.1
h y~⁢(1) |y~⁢(1)−y⁢(1)|
10−1 2.01582 1.2⁢e−02
10−2 2.02727 1.3⁢e−04
10−3 2.02739 1.3⁢e−06
10−4 2.02740 1.3⁢e−08
10−5 2.02740 1.3⁢e−10
Código 13: abs2.py
1import numpy as np
2
3def ab2(f, t0, y0, h, n):
4
5 # inicialização
6 y1 = y0 + h/2*f(t0, y0)
7 y1 = y0 + h*f(t0+h/2, y1)
8 t1 = t0 + h
9
10 # iterações
11 for k in range(1,n):
12 y = y1 + h/2*(3*f(t1, y1) \
13 - f(t0, y0))
14 t = t1 + h
15
16 t0 = t1
17 y0 = y1
18
19 t1 = t
20 y1 = y
21
22 return t, y
23
24def f(t, y):
25 return y + np.sin(t)
26
27# analítica
28def exata(t):
29 return np.exp(t) - 0.5*np.sin(t) - 0.5*np.cos(t)
30
31h = 1e-1
32n = round(1./h)
33t,y = ab2(f, 0., 0.5, h, n)
34print(f'{h:.1e}: {y:.5e} {np.abs(y-exata(1)):.1e}')

Método de Adams-Bashforth de Ordem 4

Tomando m=4 em (4.260) obtemos, de (4.259), a iteração do método de Adams-Bashforth de 4 passos

y(0)=y0, (4.268)
y(1)=y~1, (4.269)
y(2)=y~2, (4.270)
y(k+1)=y(k)+h24[55f(t(k),y(k))
−59⁢f⁢(t(k−1),y(k−1))+37⁢f⁢(t(k−2),y(k−2))
−9f(t(k−3),y(k−3))], (4.271)
Exemplo 4.5.2.

Consideremos o seguinte problema de valor inicial

y′−y=sen⁡(t),t>0 (4.272)
y⁢(0)=12. (4.273)

Na Tabela 4.8, temos as aproximações y~⁢(1) de y⁢(1) computadas pelo método de Adams-Bashforth de 4 passos. Como este método é de ordem 3, escolhemos inicializá-lo pelo método de Runge-Kutta de ordem 4, de forma a mantermos a consistência.

Tabela 4.8: Resultados referentes ao Exemplo 4.5.2
h y~⁢(1) |y~⁢(1)−y⁢(1)|
10−1 2.02735 5.0⁢e−05
10−2 2.02740 7.7⁢e−09
10−3 2.02740 7.9⁢e−13
Código 14: ab4.py
1import numpy as np
2
3def ab4(f, t0, y0, h, n):
4
5 t = np.empty(5)
6 t[0] = t0
7 y = np.empty(5)
8 y[0] = y0
9
10 # inicialização
11 for k in range(3):
12 phi1 = f(t[k], y[k])
13 phi2 = f(t[k]+h/2, y[k] + h*phi1/2)
14 phi3 = f(t[k]+h/2, y[k] + h*phi2/2)
15 phi4 = f(t[k]+h, y[k] + h*phi3)
16
17 y[k+1] = y[k] + h/6 \
18 * (phi1 + 2*phi2 + 2*phi3 + phi4)
19 t[k+1] = t[k] + h
20
21 # iterações
22 for k in range(3,n):
23 y[4] = y[3] + h/24*(55*f(t[3], y[3]) \
24 - 59*f(t[2], y[2]) \
25 + 37*f(t[1], y[1]) \
26 - 9*f(t[0], y[0]))
27 t[4] = t[3] + h
28
29 t[:4] = t[1:]
30 y[:4] = y[1:]
31
32 return t[4], y[4]
33
34def f(t, y):
35 return y + np.sin(t)
36
37# analítica
38def exata(t):
39 return np.exp(t) - 0.5*np.sin(t) - 0.5*np.cos(t)
40
41h = 1e-3
42n = round(1./h)
43t,y = ab4(f, 0., 0.5, h, n)
44print(f'{h:.1e}: {y:.5e} {np.abs(y-exata(1)):.1e}')

4.5.2 Métodos de Adams-Moulton

Métodos de Adams-Moulton são esquemas implícitos obtidos tomando-se i=1, j=0 em (4.253) e incluindo-se t(k+1) como nodo da quadratura em (4.254).

Método de Admans-Moulton de 2 Passos

A iteração do de Admans-Moulton de 2 Passos (A-B-2)131313Consulte o E.4.5.6 é

y(0)=y0, (4.274)
y(1)=y~1, (4.275)
y(k+1)=y(k)+h12[5f(t(k+1),y(t(k+1)))
+8⁢f⁢(t(k),y⁢(t(k)))
−f(t(k−1),y(t(k−1)))] (4.276)
Observação 4.5.2.(Estimativa do erro local)

O método A-B-2 tem erro de truncamento local da O⁢(h3).

A inicialização do método A-B-2 requer a computação de y(1) por algum método de passo simples. Manter a consistência é um desafio e uma alternativa é a utilização de um esquema preditor-corretor.

Método Preditor-Corretor

Um Método Preditor-Corretor consistem em acoplar um método explícito com um implícito. A cada passo no tempo t(k), o método explícito (preditor) é usado para computar uma primeira aproximação y~(k)≈y⁢(t(k)) e, o método implícito (corretor) é usado para computar y(k), usando y~(k) no esquema.

Exemplo 4.5.3.

Consideremos o seguinte PVI

y′−y=sen⁡(t)⁢,0<t≤1, (4.277)
y⁢(0)=12. (4.278)

Na Tabela 4.9, temos as aproximações y~⁢(1) de y⁢(1) computadas pelo Método Preditor-Corretor de Adams de 2 passos141414Com erro de truncamento local de O⁢(h2).. Para a inicialização, usamos o método do ponto médio (4.172)-(4.173), como preditor o Método de Adams-Bashforth de 2 passos (4.265) e como corretor o Método de Adams-Moulton (4.274)-(4.276).

Tabela 4.9: Resultados referentes ao Exemplo 4.5.3.
h y~⁢(1) |y~⁢(1)−y⁢(1)|
10−1 2.02638 1.0⁢e−03
10−2 2.02739 1.1⁢e−06
10−3 2.02740 1.2⁢e−09
Código 15: pca2.py
1import numpy as np
2
3def pca2(f, t0, y0, h, n):
4
5 t = np.empty(3)
6 t[0] = t0
7 y = np.empty(3)
8 y[0] = y0
9
10 # inicialização (PM 2)
11 y[1] = y[0] + h/2*f(t[0], y[0])
12 y[1] = y[0] + h*f(t[0]+h/2, y[1])
13 t[1] = t[0] + h
14
15
16 # iterações
17 for k in range(1,n):
18
19 # preditor (AB 2)
20 y[2] = y[1] + h/2*(3*f(t[1],y[1]) \
21 - f(t[0], y[0]))
22 t[2] = t[1] + h
23 # corretor (AM 2)
24 y[2] = y[1] + h/12*(5*f(t[2],y[2]) \
25 + 8*f(t[1], y[1]) \
26 - f(t[0], y[0]))
27
28 t[:2] = t[1:]
29 y[:2] = y[1:]
30
31 return t[2], y[2]
32
33def f(t, y):
34 return y + np.sin(t)
35
36# analítica
37def exata(t):
38 return np.exp(t) - 0.5*np.sin(t) - 0.5*np.cos(t)
39
40h = 1e-1
41n = round(1./h)
42t,y = pca2(f, 0., 0.5, h, n)
43print(f'{h:.1e}: {y:.5e} {np.abs(y-exata(1)):.1e}')

Método de Adams-Moulton de 4 Passos

O Método de Adams-Moulton de 4 Passos é um método implícito com erro de truncamento local de O⁢(h5). Sua iteração consiste em

y(0)=y0, (4.279)
y(1)=y~1, (4.280)
y(2)=y~2, (4.281)
y(3)=y~3, (4.282)
y(k+1)=y(k)+h720[251f(t(k+1),y(k+1))
+646⁢f⁢(t(k),y(k))−264⁢f⁢(t(k−1),y(k−1))
+106f(t(k−2),y(k−2))−19f(t(k−3),y(k−3))]. (4.283)
Exemplo 4.5.4.

Consideramos o seguinte PVI

y′−y=sen⁡(t)⁢,0<t≤1, (4.284)
y⁢(0)=12. (4.285)

Podemos computar uma aproximação para y⁢(1) usando um esquema preditor-corretor com: inicialização pelo método RK-4 (4.185)-(4.186), preditor o Método de Adams-Bashforth de 4 passos (4.268)-(4.271) e como corretor o Método de Adams-Moulton (4.279)-(4.283). Isto nos fornece um método com erro de truncamento local mínimo de O⁢(h4). Consulte o E.4.5.4.

4.5.3 Exercícios

E. 4.5.1.

Considere o seguinte problema de valor inicial

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

Inicializando pelo Método de Euler, use os seguintes métodos de passo múltiplo com h=0,1 para computar o valor aproximado de y⁢(2):

  1. a)

    método de Adams-Bashforth de ordem 2.

  2. b)

    método de Adams-Bashforth de ordem 3.

  3. c)

    método de Adams-Bashforth de ordem 4.


a) −6.00696⁢e−1; b) −5.96694⁢e−1; c) −5.96161⁢e−1

E. 4.5.2.

(4.144)-(4.145) Considere o PVI

y′+cos⁡(t)=y,0<t≤1, (4.288)
y⁢(0)=12. (4.289)

Usando um método de inicialização adequado, aplique os seguintes métodos para computar aproximações para y⁢(1):

  1. a)

    Método de Adams-Bashforth de 2 Passos.

  2. b)

    Método de Adams-Bashforth de 4 Passos.

Em cada caso, verifique se seus resultados satisfazem a ordem esperada do erro de truncamento local.


Dica: solução analítica é y⁢(t)=12⁢cos⁡(t)−12⁢sin⁡(t).

a) Inicialização pelo Método do Ponto Médio, τ=O⁢(h2); b) Inicialização pelo Método de RK-4, τ=O⁢(h4).

E. 4.5.3.

Desenvolva o Método de Adams-Bashforth de ordem 3. Para tando, assuma m=3 em (4.260) para obter as iterações

y(0)=y0, (4.290)
y(k+1)=y(k)+h12[23f(t(k),y(k)) (4.291)
−16f(t(k−1),y(k−1))+5f(t(k−2),y(k−2))], (4.292)

Escolha um método adequado para inicializá-lo e implemente-o para computar a solução aproximada de y⁢(1) para o PVI

y′−y=sen⁡(t)⁢,0<t≤1, (4.293)
y⁢(0)=12. (4.294)

Dica: use um Método de R-K com O⁢(hP), p≥3, como inicializador.

E. 4.5.4.

Considere o PVI

y′−y=sen⁡(t)⁢,0<t≤1, (4.295)
y⁢(0)=12. (4.296)

Compute aproximações para y⁢(1) usando um esquema preditor-corretor com: inicialização pelo método RK-4 (4.185)-(4.186), preditor o Método de Adams-Bashforth de 4 passos (4.268)-(4.271) e como corretor o Método de Adams-Moulton (4.279)-(4.283). Verifique que isso nos fornece um método com erro de truncamento local mínimo de O⁢(h4).


Dica: solução analítica é y⁢(t)=et−12⁢sen⁡(t)−12⁢cos⁡(t).

E. 4.5.5.

O Método de Adams-Moulton de 3 passos (AM-3) é um método implícito com erro de truncamento local de O⁢(h4). Sua iteração consiste em

y(0)=y0, (4.297)
y(1)=y~1, (4.298)
y(2)=y~2, (4.299)
y(k+1)=y(k)+h24[9f(t(k+1),y(k+1))
+19⁢f⁢(t(k),y(k))−5⁢f⁢(t(k−1),y(k−1))
+f(t(k−2),y(k−2))]. (4.300)

Refaça o E.4.5.4 substituindo o método corretor pelo AM-3. Verifique se suas computações satisfazem o espero erro de truncamento local.


Dica: τ=O⁢(h4).

Análise Numérica

E. 4.5.6.

Mostre o desenvolvimento do Método de Adams-Moulton de 2 passos (4.274)-(4.276).


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
| | | |