Método de Leapfrog: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
(7 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 5: Linha 5:
\frac{dv}{dt} & =a\end{align}</math>
\frac{dv}{dt} & =a\end{align}</math>


Sendo a [[Derivada Numérica]]:
Sendo a [[Derivada Numérica | derivada numérica]]:


<math display="block">\begin{align}
<math display="block">\begin{align}
Linha 15: Linha 15:
<math display="block">v\left(t+\Delta t/2\right)\approx\frac{x\left(t+\Delta t\right)-x\left(t\right)}{\Delta t}</math>
<math display="block">v\left(t+\Delta t/2\right)\approx\frac{x\left(t+\Delta t\right)-x\left(t\right)}{\Delta t}</math>


Ou ainda
Ou ainda:


<math display="block">x\left(t+\Delta t\right)=x\left(t\right)+v\left(t+\Delta t/2\right)\Delta t</math>
<math display="block">x\left(t+\Delta t\right)=x\left(t\right)+v\left(t+\Delta t/2\right)\Delta t</math>
Linha 33: Linha 33:
x\left(t+\Delta t\right) & =x\left(t\right)+v\left(t+\Delta t/2\right)\Delta t\end{align}</math>
x\left(t+\Delta t\right) & =x\left(t\right)+v\left(t+\Delta t/2\right)\Delta t\end{align}</math>


= Exemplo =
Aplicando o algoritmo para o sistema massa-mola visto no [[Método de Euler-Cromer | método de Euler-Cromer]]:
<math display="block"> \frac{d^{2}x}{dt^{2}}=-\frac{k}{m}x=-\omega^{2}x </math>
Podemos ressaltar ainda que <math>a =-\omega^{2}x </math>  e <math>  \frac{dv}{dt}=\frac{d^{2}x}{dt^{2}}</math>.


<pre>
<pre>
import matplotlib.pyplot as plt            #Biblioteca para plotar gráficos
import numpy as np                        #Biblitoeca de cálculos científicos
#Constantes
m=1  ; k= 1.; w2= k/m
#Parâmetros
dt  = 0.1 ; tau = 2*np.pi; tf=4*tau ; Np= int(tf/dt)
#Valores iniciais
x=[1]; v0=0; tx=[0]; tv=[dt/2]
#Usamo Euler-Cromer para calcular a velocidade em t=dt/2
x_temp=x[0]+(dt/2)*v0              #Posição    em t=dt/2
v=[v0-(dt/2)*x_temp*w2]            #Velocidade em t=dt/2
#Método Leapfrog
for it  in range(Np):
  x.append(x[it]+dt*v[it]) 
  tx.append(dt+it*dt)
  v.append(v[it]-w2*x[it+1]*dt)
  tv.append(dt/2+(1+it)*dt)
#plt.plot(tx,x)
#plt.plot(tv,v)
#Para calcular a energia vamos pegar a média da velocidade
#para termos velocidade e posição no mesmo instante
vm=[v0]
E=[k*(x[0]**2)/2+m*(v[0]**2)/2]
for it in range(len(x)-1):
  vm.append((v[it+1]+v[it])/2)
  E.append(k*x[it+1]**2/2+m*v[it+1]**2/2)
#plt.plot(tx,E)
plt.plot(x,v)
</pre>
</pre>


= Citações =
= Citações =
<references />
<references />

Edição atual tal como às 17h44min de 15 de março de 2022

Partindo da ideia que uma inclinação entre dois em uma curva é uma aproximação muito melhor da derivada no ponto médio em alguma das extremidades[1]., e tendo as seguintes equações do movimento:

Sendo a derivada numérica:

Então para a equação da velocidade temos que:

Ou ainda:

E aplicando a mesma ideia para a aceleração:

Logo:

Temos então:

Exemplo

Aplicando o algoritmo para o sistema massa-mola visto no método de Euler-Cromer:

Podemos ressaltar ainda que e .

import matplotlib.pyplot as plt            #Biblioteca para plotar gráficos
import numpy as np                         #Biblitoeca de cálculos científicos

#Constantes
m=1  ; k= 1.; w2= k/m
#Parâmetros
dt  = 0.1 ; tau = 2*np.pi; tf=4*tau ; Np= int(tf/dt)
#Valores iniciais
x=[1]; v0=0; tx=[0]; tv=[dt/2]

#Usamo Euler-Cromer para calcular a velocidade em t=dt/2
x_temp=x[0]+(dt/2)*v0              #Posição    em t=dt/2
v=[v0-(dt/2)*x_temp*w2]            #Velocidade em t=dt/2

#Método Leapfrog
for it  in range(Np):
  x.append(x[it]+dt*v[it])  
  tx.append(dt+it*dt)
  v.append(v[it]-w2*x[it+1]*dt)
  tv.append(dt/2+(1+it)*dt)

#plt.plot(tx,x)
#plt.plot(tv,v)

#Para calcular a energia vamos pegar a média da velocidade
#para termos velocidade e posição no mesmo instante

vm=[v0]
E=[k*(x[0]**2)/2+m*(v[0]**2)/2] 
for it in range(len(x)-1):
  vm.append((v[it+1]+v[it])/2)
  E.append(k*x[it+1]**2/2+m*v[it+1]**2/2)

#plt.plot(tx,E)
plt.plot(x,v)

Citações

  1. https://young.physics.ucsc.edu/115/leapfrog.pdf (Peter Young, Universidade da California)