Use o botão abaixo para reportar erros ou dar sugestões.

Cálculo Numérico - Versão GNU Octave

10.11 Método de Adams-Moulton


O método de Adams-Moulton, assim como o método de Adams-Bashforth, é um método de passo múltiplo. A diferença entre estes dois métodos é que Adams-Bashforth é explícito, enquanto Adams-Moulton é implícito, isto é, os valores de f t,u), nos passos n, n + 1, ..., n + s − 1 e, inclusive, n + s são utilizados ao calcular f em t(n+s).

Considere o problema de valor inicial u′(t) = f(t,u(t)) (10.292) u(t0) = a (10.293)

Integrando a equação diferencial no intervalo [t(n+s−1),t(n+s)], obtemos:

u(n+s) = u(n+s−1) + ∫ t(n+s−1)t(n+s) f(t,u(t))dt (10.294)

Agora o integrando em (10.294) é aproximado pelo polinômio que interpola f(t(k),u(k)) para k = n,n + 1,n + 2,…,n + s, isto é:

u(n+s) = u(n+s−1) + ∫ t(n+s−1)t(n+s) p(t)dt (10.295)

onde p(t) é polinômio de grau s dado na forma de Lagrange por:

p(t) = ∑ j=0s f(t(n),u(n)) ∏ k=0,k≠js t − t(n+k) t(n+j) − t(n+k) (10.296)

Agora observamos que

∫ t(n+s−1)t(n+s) p(t)dt = h∑ j=0sβ jf(t(n+j),u(n+j)) (10.297)

onde

βj = 1 h∫ t(n+s−1)t(n+s) ∏ k=0,k≠js t − t(n+k) t(n+j) − t(n+k)dt (10.298)

Aplicando a mudança de variáveis t = t(n+s−1) + hτ, temos: βj = ∫ 01 ∏ k=0,k≠jsτ + s − k − 1 j − k dt (10.299) = (−1)s−j j!(s − j)! ∫ 01 ∏ k=0,k≠js(τ + s − k − 1)dτ (10.300) = (−1)s−j j!(s − j)! ∫ 01 ∏ k=0,k≠s−j−1s(τ + k − 1)dτ (10.301)

Assim, obtemos a relação de recorrência: u(n+s) = u(n+s−1) + h∑ j=0sβ jf(t(n+j),u(n+j)) (10.302)

Observação 10.11.1. Os coeficientes do método de Adams-Moulton de s passos podem, alternativamente, ser obtidos exigindo que o sistema seja exato para f(t,u) = t0, f(t,u) = t1, f(t,u) = t2, …, f(t,u) = ts.

Exemplo 10.11.1. Obtenha o método de Adams-Moulton para s = 3 como u(n+3) = u(n+2) + ∫ t(n+3)t(n+4)f(t,u(t))dt (10.303) u(n+3) = u(n+2) + h∑ m=03b mf(n+m) (10.304) u(n+3) = u(n+2) + h b 3f(n+3) + b 2f(n+2) + b 1f(n+1) + b 0f(n) (10.305)

Para isso devemos obter [b3,b2,b1,b0] tal que o método seja exato para polinômios até ordem 3. Podemos obter esses coeficientes de maneira análoga a obter os coeficientes de um método para integração.

Supondo que os nós tk estejam igualmente espaçados, e para facilidade dos cálculos, como o intervalo de integração é [t(n+2),t(n+3)], translade t(n+2) para a origem tal que [t(n),t(n+1),…,t(n+3)] = [−2h, − h,0,h].

Considere a base [1,t,t2,t3] e substitua f(t) por cada um dos elementos da base,obtendo: ∫ 0h1dt = h = h(b 0(1) + b1(1) + b2(1) + b3(1)) (10.306) ∫ 0htdt = h2 2 = h(b0(h) + b1(0) + b2(−h) + b3(−2h)) (10.307) ∫ 0ht2dt = h3 3 = h(b0(h)2 + b 1(0)2 + b 2(−h)2 + b 3(−2h)2) (10.308) ∫ 0ht3dt = h4 4 = h(b0(h)3 + b 1(0)3 + b 2(−h)3 + b 3(−2h)3) (10.309)

que pode ser escrito na forma matricial 1 0 1 1 1 0 − 1 − 2 1 0 1 4 1 0 − 1 − 8 b0 b1 b2 b3 = 1 1∕2 1∕3 1∕4 (10.310)

Resolvendo o sistema obtemos

[b0,b1,b2,b3] = 1 24, − 5 24,19 24, 9 24 (10.311)

fornecendo a regra un+3 = un+2 + h 24[9fn+3 + 19fn+2 − 5fn+1 + f(n)] (10.312)

A tabela abaixo mostra as coeficientes do método de Adams-Moulton para até oito passos.










1 1
2 1 2 1 2
3 − 1 12 2 3 5 12
4 1 24 − 5 24 19 24 3 8
5 − 19 720 53 360 − 11 30 323 360 251 720
6 3 160 − 173 1440 241 720 − 133 240 1427 1440 95 288
7 − 863 60480 263 2520 − 6737 20160 586 945 − 15487 20160 2713 2520 19087 60480
8 275 24192 − 11351 120960 1537 4480 − 88547 120960 123133 120960 − 4511 4480 139849 120960 5257 17280









Exemplo 10.11.2. O esquema iterativo de Adams-Moulton com três passos, isto é, s = 2 é dado na forma:

u(n+2) = u(n+1) + h 12 5f t(n+2),u(t(n+2)) + 8f t(n+1),u(t(n+1)) − f t(n),u(t(n)) (10.313)

Exercícios resolvidos


ER 10.11.1. Resolva o problema de valor inicial dado por: u′(t) = −2u(t) + te−t (10.314) u(0) = −1 (10.315)

via Adams-Moulton com s = 2 (três passos) com h = 0,1 e h = 0,01 e compare com a solução exata dada por u(t) = (t − 1)e−t nos instantes t = 1 e t = 2. Inicialize com Euler modificado.

Solução. Primeiro observamos que f(u,t) = −2u + te−t e que o esquema de Adams-Moulton pode ser escrito como:
u(n+2) = u(n+1) + h 12 5f t(n+2),u(t(n+2)) + 8f t(n+1),u(t(n+1)) − f t(n),u(t(n)) (10.316)

de forma que: u(n+2) = u(n+1) + h 12 8f t(n+1),u(t(n+1)) − f t(n),u(t(n)) + 5h 12f t(n+2),u(t(n+2)) (10.317) = u(n) + h 12 8f(n+1) − f(n) + 5h 12 t(n+2)et(n+2) − 2u(t(n+2)) (10.318)

Assim: 1 + 5h 6 u(n+2) = u(n+1) + h 12 8f(n+1) − f(n) + 5h 12t(n+2)e−t(n+2) (10.319)

Os valores obtidos são:




t=1 t=2



h=0,1 -0,000223212480142 0,135292280956
h=0,01 -2,02891229566e-07 0,135335243537
Exato 0 0,135335283237



A seguinte rotina implementa a recursão:
function y = g(x)  
  y=x*exp(-x);  
endfunction  
 
function u=moulton(u0,h,Tmax)  
  itmax=Tmax/h;  
 
  u=[0:h:Tmax];  
  fn=[0:h:Tmax];  
 
  u(1)=u0;  
  l=-2;  
  %Iniciliza com Euler modificado  
  k1= l*u(1) + g(0);  
  k2= l*(u(1)+h*k1) + g(h);  
  u(2)= u(1)+ h *(k1+k2)/2;  
 
  fn(1)= k1;  
  fn(2)= l*u(2) + g(h);  
 
 
 
  for n=1:itmax-1  
    gn2=g((n+1)*h);  
 
    u(n+2)= (u(n+1) + h/12*(8*fn(n+1)-fn(n)) + 5*h/12*gn2 ) / (1+5*h/6);  
    fn(n+2)=l*u(n+2)+gn2;  
  endfor  
 
endfunction

A seguinte rotina implementa a recursão:

function y = g(x)  
  y=x*exp(-x);  
endfunction  
 
function u=moulton(u0,h,Tmax)  
  itmax=Tmax/h;  
 
  u=[0:h:Tmax];  
  fn=[0:h:Tmax];  
 
  u(1)=u0;  
  l=-2;  
  Iniciliza com Euler modificado  
  k1= l*u(1) + g(0);  
  k2= l*(u(1)+h*k1) + g(h);  
  u(2)= u(1)+ h *(k1+k2)/2;  
 
  fn(1)= k1;  
  fn(2)= l*u(2) + g(h);  
 
 
 
  for n=1:itmax-1  
    gn2=g((n+1)*h);  
 
    u(n+2)= (u(n+1) + h/12*(8*fn(n+1)-fn(n)) + 5*h/12*gn2 ) / (1+5*h/6);  
    fn(n+2)=l*u(n+2)+gn2;  
  end  
 
endfunction  

♢

ER 10.11.2. Repita o Problema 10.10.1 pelo método de Adams-Moulton, isto, é resolva numericamente o problema de valor inicial dado por: y′(t) = 1 + y(t), (10.320) y(0) = 0, (10.321)

aplicando o método de Adams-Moulton de dois passos. Calcule o valor de y(1) com passo de tamanho h = 0,1.

Solução. Primeiro observamos que o processo resursivo do método de Adams é dado por:
y(n+1) = y(n) + h 2 f t(n+1),u(t(n+1)) + f t(n),u(t(n)) ,n = 1,2,… (10.322)

O valor inicial é dado por y(1) = 0. Primeiramente, precisamos isolar y(x+1) na Equação 10.322:

y(n+1) = y(n)+h 8h2 + 16 + 16y(n) + 8h1 + y(n)+h 21 + y(n)+h2 8 ,n = 1,2,… (10.323)
y(1) = 0 (10.324) y(2) = 0,1025 (10.325) y(3) = 0,21 (10.326) y(4) = 0,3225 (10.327) y(5) = 0,44 (10.328) y(6) = 0,5625 (10.329) y(7) = 0,69 (10.330) y(8) = 0,8225 (10.331) y(9) = 0,96 (10.332) y(10) = 1,1025 (10.333) y(11) = 1,25 (10.334)

♢

ER 10.11.3. Resolva o problema de valor inicial dado por y′(t) = y3 − y + t, (10.335) y(0) = 0, (10.336)

aplicando o método de Adams-Moulton de dois passos. Calcule o valor de y(1) com passo de tamanho h = 0,1 e h = 0,01. Primeiro observamos que o processo resursivo do método de Adams é dado por: y(n+1) = y(n) + h 2 f t(n+1),u(t(n+1)) + f t(n),u(t(n)) ,n = 1,2,…, (10.337) y(1) = 0 (10.338)

Observamos que o problema de isolar y(n+1) pode ser escrito como y(n+1) − h 2f t(n+1),u(t(n+1)) = y(n) + h 2f t(n),u(t(n)) (10.339)

O termo da esquerda é uma expressão não linear em y(n+1) e o termo da direita é conhecido, isto é, pode ser calculado com base nos valores anteriormente calculados. Devemos, então, escolher um método numérico de solução de equações algébricas não lineares (veja capítulo 3) como o método de Newton visto na Seção 3.4 para resolver uma equação do tipo:

u − h 2f(t(n+1),u) = a, (10.340)

isto é:

u − h 2 u3 − u + t(n+1) = a, (10.341)

com a = y(n) + h 2 f t(n),u(t(n)) Os valores obtidos são: 0,37496894 e 0,37512382 quando o método é inicializadom com Euler melhorado.

Exercícios


E 10.11.1. Encontre o método de Adams-Moulton para s = 0.

Resposta.
y(n) = y(n) + hf t(n),u(t(n) (10.342)

Este esquema é equivalente ao método de Euler Implícito.

E 10.11.2. Encontre o método de Adams-Moulton para s = 1.

Resposta.
y(n+1) = y(n) + h 2 f t(n+1),u(t(n+1)) + f t(n),u(t(n)) (10.343)

Este esquema é equivalente ao método trapezoidal.

E 10.11.3. Repita o Problema 10.11.3 usando Adams-Moulton com 3 passos e inicilizando com Runge-Kutta quarta ordem clássico.

Resposta. 0,37517345 e 0,37512543.

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:36:34.

Informe erros ou edite você mesmo!