import matplotlib.pyplot as plt
import numpy as np
import pickle
from scipy.optimize import curve_fit
w=np.pi/4
x=np.arange(0,20,0.0005)
def ratchet(x,maxx,w):
"""
:param x Array position:
:param maxx Maximum de la fonction:
:param w Periode phase ascendente du potentiel:
:return Potentiel en dent de scie:
"""
W=1
a=maxx/w
b=-maxx/(W-w)
if x%W<=w:
return a*(x%W)
else:
return b*((x%W)-w)+a*w
print(w+w*((1+0.2)/0.2))
l=[]
for i in range(0,len(x)):
l.append(ratchet(x[i],1,1/3))
l=np.array(l)
t=np.arange(0,20,0.0005)
def gauss(x):
"""
:param x Nombre d'itérations:
:return Une distribution normale de forces aléatoires:
"""
l=[]
for i in range(0,x):
l.append(np.random.normal(loc=0,scale=1))
return l
def vprime(x,maxx,w):
"""
:param x Array position:
:param maxx Maximum de la fonction:
:param w Periode phase ascendente du potentiel:
:return Dérivée du potentiel en dent de scie:
"""
W=1
a=maxx/w
b=-maxx/(W-w)
if x%W<=w:
return a
else:
return b
def periode(w):
"""
:param w Période
:return Array de 0 et 1 périodique
"""
x= np.sin((2*np.pi/w)*t)
y=np.zeros(len(x))
y[x<0]=0
y[x>=0]=1
return y
def euler(w,amp):
"""
:param w Période
:param amp Amplitude du potentiel
:return Solution de l'équation différentielle stochastique
"""
x=0
l=[]
for i in range(0,len(t)):
l.append(x)
x+=(np.random.normal(0,4.5)-vprime(x,amp,1/3)*periode(w)[i])*step
return l,l[-1]
t=np.arange(0,100,0.01)
step=0.01
x=np.arange(0,20,0.0005)
vprim=[]
v=[]
for i in range(0,10000):
vprim.append(vprime(x[i],10,1/3))
v.append(ratchet(x[i],10,1/3))
fig,ax=plt.subplots(figsize=(13,7))
plt.grid()
plt.plot(x[:10000],vprim,'--r',label='grad(Potentiel)')
plt.plot(x[:10000],v,'k',label='Potentiel')
ax.set_xlabel('Position sur x')
ax.set_ylabel('Potentiel')
plt.legend()
plt.show()