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

Cálculo Numérico - Versão Python

10.13 Estratégia preditor-corretor


Esquemas implícitos como o de Adams-Moulton (Seção 10.11) e o de Runge-Kutta (Seção 10.8), embora úteis para resolver problemas rígidos (ver Seção 10.14), apresentam a dificuldade de necessitar do valor de f(t(n+1),u(n+1)) para calcular o valor de u(n+1), exigindo a solução de uma equação algébrica a cada passo. Uma forma de aproximar o comportamento de um método ímplicito através de um esquema implícito consiste em aplicar a, assim chamada, estratégia preditor-corretor.

Os métodos do tipo preditor-corretor empregam um esquema explícito para predizer o valor de u(n+1) e, depois, um método implícito para recalcular, isto é, corrigir u(n+1).

Exemplo 10.13.1. Considere o método de Euler implícito (ver 10.8.1) aplicado para resolver o problema de valor inicial u(t) = f(t,u(t)) (10.348) u(t(1)) = a (10.349)

cujo processo iterativo é dado por u(n+1) = u(n) + hf(t(n+1),u(n+1)). (10.350)

Agora aplicamos o método de Euler (ver 10.2) para predizer u(n+1): u(n+1) = u(n) + hf(t(n),u(n)). (10.351)

E agora, retornamos ao método de Euler implícito: u(n+1) = u(n) + hf(t(n+1),ũ(n+1)). (10.352)

Desta forma, a estratégia preditor-corretor aplicada ao método de Euler implícito com predição via método de Euler produz o método de Euler melhorado, ver 10.3, isto é: ũ(n+1) = u(n) + hf(t(n),u(n)), (10.353) u(n+1) = u(n) + hf(t(n+1),ũ(n+1)). (10.354)

Exemplo 10.13.2. Considere o método de trapezoidal (ver 10.8.2) aplicado para resolver o problema de valor inicial u(t) = f(t,u(t)) (10.355) u(t(1)) = a (10.356)

cujo processo iterativo é dado por u(n+1) = u(n) + h 2 f(t(n),u(n)) + f(t(n+1),u(n+1)) . (10.357)

Agora aplicamos o método de Euler (ver 10.2) para predizer u(n+1): ũ(n+1) = u(n) + hf(t(n),u(n)). (10.358)

E agora, retornamos ao método trapezoidal para obter: ũ(n+1) = u(n) + hf(t(n),u(n)), (10.359) u(n+1) = u(n) + h 2 f(t(n),u(n)) + f(t(n+1),ũ(n+1)) . (10.360)

Exemplo 10.13.3. Considere o método de Adams-Moulton de segunda ordem (ver 10.11) aplicado para resolver o problema de valor inicial u(t) = f(t,u(t)) (10.361) u(t(1)) = a (10.362)

cujo processo iterativo é dado por u(n+1) = u(n) + h 2 f(t(n),u(n)) + f(t(n+1),u(n+1)) . (10.363)

Agora aplicamos o método de Adams-Bashforth de segunda ordem (ver 10.10) para predizer u(n+1): ũ(n+1) = u(n) + h 2 -f(t(n-1),u(n-1)) + 3f(t(n),u(n)) . (10.364)

Assim, obtemos o seguinte método: ũ(n+1) = u(n) + h 2 -f(t(n-1),u(n-1)) + 3f(t(n),u(n)) , (10.365) u(n+1) = u(n) + h 2 f(t(n),u(n)) + f(t(n+1),ũ(n+1)) . (10.366)

10.13.1 Exercícios resolvidos


Esta seção carece de exercícios resolvidos. Clique em e inicie a editá-la agora mesmo. Veja outras formas de participar clicando aqui.

Exercícios


E 10.13.1. Construa o esquema preditor corretor combinando Adams-Moulton de quarta ordem e Adams-Bashforth de quarta ordem.

Resposta. ũ(n+1) = u(n) + h 24 -9f(t(n-3),u(n-3)) + 37f(t(n-2),u(n-2)) - 59f(t(n-1),u(n-1)) + 55f(t(n),u(n)) , (10.367) u(n+1) = u(n) + h 24 f(t(n-2),u(n-2)) - 5f(t(n-1),u(n-1)) + 19f(t(n),u(n)) + 9f(t(n+1),ũ(n+1)) . (10.368)

E 10.13.2. Seja o problema de valor inicial dado por: u(t) = u(t) + 1 (10.369) u(0) = 0 (10.370)

Resolva numericamente esse problema pelo método de Adams-Bashforth de segunda ordem e pelo método preditor corretor combinando Adams-Bashforth de segunda order com Adams-Moulton de segunda ordem. Compare a solução obtida para t = 10 com a solução exata dada por:

u(t) = t2 4 + t. (10.371)

Inicialize os métodos empregando Runge-Kuta de segunda ordem.

Resposta. Adams-Bashforth: 34,99965176,   Preditor-corretor: 34,99965949,   Exato: 35

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 15/5/2019 às 15:24:50.

Informe erros ou edite você mesmo!