Buscar

Método de Adams-Moulton

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

Continue navegando