| | | | |

4.5 Métodos de Passo Múltiplo

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

Seja um Problema de Valor Inicial (PVI)

y(t) =f(t,y(t)),t0<ttf, (4.173a)
y(t0) =y0. (4.173b)

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

y(t(k+i))=y(t(kj))+t(kj)t(k+i)f(s,y(s))𝑑s. (4.174)

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

t(kj)t(k+i)f(s,y(s))𝑑sl=1mf(s(l),y(s(l)))w(l), (4.175)

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.175), i.e.

y(t(k+1))=y(t(k))+t(k)t(k+1)f(s,y(s))𝑑s. (4.176)

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

t(k)t(k+1)f(s,y(s))𝑑sl=1mf(s(l),y(s(l)))w(l), (4.177)

e

w(l)=t(k)t(k+1)plp=1mss(p)s(l)s(p)ds. (4.178)

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

w(l)=h01plp=1mu+p1pldu (4.179)

Donde, obtemos o seguinte esquema numérico

y(k+1)=y(k)+hl=1mw(l)f(t(kl+1),y(kl+1)), (4.180)

onde

w(l)=01plp=1ms+p1plds. (4.181)
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.181), temos

w(1)=01s+1ds=32 (4.182)

e

w(2)=01sds=12. (4.183)

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

y(0)=y0, (4.184)
y(1)=y~1,
y(k+1)=y(k)+h2[3f(t(k),y(k))f(t(k1),y(k1))],

com t(k)=t0+kh, h=(tft0)/n, k=0,1,2,,n.

Exemplo 4.5.1.

Consideramos o seguinte PVI

yy=sen(t),t>0 (4.185a)
y(0)=12. (4.185b)

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)|
101 2.01582 1.2e02
102 2.02727 1.3e04
103 2.02739 1.3e06
104 2.02740 1.3e08
105 2.02740 1.3e10
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.181) obtemos, de (4.180), a iteração do método de Adams-Bashforth de 4 passos

y(0)=y0, (4.186)
y(1)=y~1,
y(2)=y~2,
y(k+1)=y(k)+h24[55f(t(k),y(k))
59f(t(k1),y(k1))+37f(t(k2),y(k2))
9f(t(k3),y(k3))],
Exemplo 4.5.2.

Consideremos o seguinte problema de valor inicial

yy =sen(t),t>0 (4.187)
y(0) =12. (4.188)

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)|
101 2.02735 5.0e05
102 2.02740 7.7e09
103 2.02740 7.9e13
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.174) e incluindo-se t(k+1) como nodo da quadratura em (4.175).

Método de Admans-Moulton de 2 Passos

A iteração do de Admans-Moulton de 2 Passos (A-B-2)2020endnote: 20Consulte o Exercício 4.5.6 é

y(0)=y0, (4.189)
y(1)=y~1,
y(k+1)=y(k)+h12[5f(t(k+1),y(t(k+1)))
+8f(t(k),y(t(k)))
f(t(k1),y(t(k1)))]
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

yy=sen(t),0<t1, (4.190a)
y(0)=12. (4.190b)

Na Tabela 4.9, temos as aproximações y~(1) de y(1) computadas pelo Método Preditor-Corretor de Adams de 2 passos2121endnote: 21Com erro de truncamento local de O(h2).. Para a inicialização, usamos o Método do Ponto Médio 4.126, como preditor o Método de Adams-Bashforth de 2 passos (4.184) e como corretor o Método de Adams-Moulton (4.189).

Tabela 4.9: Resultados referentes ao Exemplo 4.5.3.
h y~(1) |y~(1)y(1)|
101 2.02638 1.0e03
102 2.02739 1.1e06
103 2.02740 1.2e09
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.191)
y(1)=y~1,
y(2)=y~2,
y(3)=y~3,
y(k+1)=y(k)+h720[251f(t(k+1),y(k+1))
+646f(t(k),y(k))264f(t(k1),y(k1))
+106f(t(k2),y(k2))19f(t(k3),y(k3))].
Exemplo 4.5.4.

Consideramos o seguinte PVI

yy=sen(t),0<t1, (4.192a)
y(0)=12. (4.192b)

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

4.5.3 Exercícios

E. 4.5.1.

Considere o seguinte problema de valor inicial

y+ey2+1=2,t>1, (4.193a)
y(1)=1. (4.193b)

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.

Resposta.

a) 6.00696e1; b) 5.96694e1; c) 5.96161e1

E. 4.5.2.

(4.2.1) Considere o PVI

y+cos(t)=y,0<t1, (4.194a)
y(0)=12. (4.194b)

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.

Resposta.

Dica: solução analítica é y(t)=12cos(t)12sin(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.181) para obter as iterações

y(0)=y0, (4.195)
y(k+1)=y(k)+h12[23f(t(k),y(k))
16f(t(k1),y(k1))+5f(t(k2),y(k2))],

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

yy=sen(t),0<t1, (4.196a)
y(0)=12. (4.196b)
Resposta.

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

E. 4.5.4.

Considere o PVI

yy=sen(t),0<t1, (4.197a)
y(0)=12. (4.197b)

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

Resposta.

Dica: solução analítica é y(t)=et12sen(t)12cos(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.198)
y(1)=y~1,
y(2)=y~2,
y(k+1)=y(k)+h24[9f(t(k+1),y(k+1))
+19f(t(k),y(k))5f(t(k1),y(k1))
+f(t(k2),y(k2))].

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

Resposta.

Dica: τ=O(h4).

Análise Numérica

E. 4.5.6.

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


Envie seu comentário

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. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!