From 1af35b5cfd4b317d517efdad7334df24243c23ce Mon Sep 17 00:00:00 2001 From: Milang Date: Tue, 22 Dec 2020 17:27:13 +0100 Subject: [PATCH] Ajout du script --- simul.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 simul.py diff --git a/simul.py b/simul.py new file mode 100644 index 0000000..52f3397 --- /dev/null +++ b/simul.py @@ -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()