Baixe o app para aproveitar ainda mais
Prévia do material em texto
308 Cálculo Numérico ♦ A seguinte rotina implementa o método: def f(t,u): return np.sqrt(1+u) def adams_bash_2(h,Tmax,u1): dim=np.size(u1) itmax=np.int(Tmax/h) u=np.empty((itmax+1,dim)) u[0,:]=u1 #inicaliza com RK2 k1 = f(0, u[0,:]) k2 = f(h, u[0,:] + k1* h) u[1,:] = u[0,:] + (k1+k2)* h/2 fn_0=k1 for i in np.arange(0,itmax-1): t=(i+1)*h fn_1 = f(t, u[i+1,:]) u[i+2,:] = u[i+1,:] + h*(-.5*fn_0 + 1.5*fn_1) fn_0=fn_1 return u u0=0 h=1e-1 Tmax=1 u=adams_bash_2(h,Tmax,u0) print u Em construção ... Gostaria de participar na escrita deste livro? Veja como em: https://www.ufrgs.br/reamat/participe.html Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br https://www.ufrgs.br/reamat/participe.html https://creativecommons.org/licenses/by-sa/3.0/ reamat@ufrgs.br 10.11. MÉTODO DE ADAMS-MOULTON 309 Exercícios Em construção ... Gostaria de participar na escrita deste livro? Veja como em: https://www.ufrgs.br/reamat/participe.html 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) t(n+s−1) 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) t(n+s−1) p(t)dt (10.295) onde p(t) é polinômio de grau s dado na forma de Lagrange por: p(t) = s∑ j=0 f(t(n),u(n)) s∏ k=0,k 6=j t− t(n+k) t(n+j) − t(n+k) (10.296) Agora observamos que ∫ t(n+s) t(n+s−1) p(t)dt = h s∑ j=0 βjf(t(n+j),u(n+j)) (10.297) onde βj = 1 h ∫ t(n+s) t(n+s−1) s∏ k=0,k 6=j t− t(n+k) t(n+j) − t(n+k)dt (10.298) Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br https://www.ufrgs.br/reamat/participe.html https://creativecommons.org/licenses/by-sa/3.0/ reamat@ufrgs.br Problemas de valor inicial Método de Adams-Moulton
Compartilhar