|
|
|
@ -0,0 +1,43 @@
|
|
|
|
|
import numpy as np
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
|
|
# tracé pour alpha et la valeur de l'acceleration données
|
|
|
|
|
|
|
|
|
|
def vmax(alpha, accel, masse):
|
|
|
|
|
return masse * accel / alpha
|
|
|
|
|
|
|
|
|
|
# calc_accel: simulation simple de la vitesse pour v_init = 0 en fournissant une force constante
|
|
|
|
|
# Calcule sur 1000 points la courbe de la vitesse pour t compris entre 0 et 5 * alpha / masse (temps de réponse à 99%)
|
|
|
|
|
def calc_accel(alpha, accel, masse):
|
|
|
|
|
x = np.linspace(0, 5*alpha/masse, 1000)
|
|
|
|
|
y = masse * accel / alpha * ( 1 - np.exp( - x * masse/alpha ) )
|
|
|
|
|
return x,y
|
|
|
|
|
|
|
|
|
|
# calc_decel: simulation simble de la vitesse pour v_init donnée, en fournissant une force constante
|
|
|
|
|
# Calcule sur 1000 points la courbe de la vitesse pour t compris entre 0 et 5 * alpha / masse (temps de réponse à 99%)
|
|
|
|
|
def calc(alpha, accel, vinit, masse):
|
|
|
|
|
x = np.linspace(0, 5*alpha/masse, 1000)
|
|
|
|
|
y = vinit * np.exp( - x * masse/alpha ) + masse * accel / alpha * ( 1 - np.exp( - x * masse/alpha ) )
|
|
|
|
|
return x,y
|
|
|
|
|
|
|
|
|
|
# simulation d'acceleration puis de décéleration déterminant les différentes valeurs de reponse
|
|
|
|
|
def simul(alpha = 0.1, accel=5, masse=1):
|
|
|
|
|
print("Simulation pour [ alpha={}, accel={}m.s-2, masse={}kg ]".format(alpha,accel,masse))
|
|
|
|
|
print("Accélération:")
|
|
|
|
|
x_phase1, y_phase1 = calc(alpha, accel, 0, masse)
|
|
|
|
|
|
|
|
|
|
vitesse_max_theorique = masse * accel/alpha
|
|
|
|
|
vitesse_max_pratique = y_phase1[-1]
|
|
|
|
|
temps_rep99 = x_phase1[-1]
|
|
|
|
|
print("\tVitesse max théorique :", y_phase1[-1])
|
|
|
|
|
print("\tPour t =", temps_rep99, "la vitesse vaut ~99% de la vitesse max théorique: v =", vitesse_max_pratique)
|
|
|
|
|
|
|
|
|
|
print("Décélération:")
|
|
|
|
|
x_phase2, y_phase2 = calc(alpha, 0, vitesse_max_pratique, masse)
|
|
|
|
|
print("Pour t =", temps_rep99, ", la vitesse a chuté d'environ 99%.")
|
|
|
|
|
plt.plot(x_phase1.tolist() + (x_phase2+x_phase1[-1]).tolist(), y_phase1.tolist() + y_phase2.tolist())
|
|
|
|
|
|
|
|
|
|
# Exemple: application pour différents coefficients de friction avec une accélération constante
|
|
|
|
|
for i in np.linspace(0.1,1,10):
|
|
|
|
|
simul(alpha=i, accel=1, masse=1)
|
|
|
|
|
plt.show()
|