Page 3 sur 5
Physique - Mouvement sur un plan incliné
Source
Extrait d'un manuel de physique. Par respect pour le concepteur de ce script, je laisse les lignes ###TODO donc ce programme est à terminer! Il vous manque l'accélération ;)
- Le fichier csv contenant les valeurs est en dessous, vous devez le télécharger et l'enregistrer dans le dossier qui contiendra votre programme python!
https://www.ipa-troulet.fr/cours/attachments/article/542/cylindre_plan_incline.csv - Le début du programme ne fonctionnant pas, j'ai utilisé pandas
import pandas as pd mesures=pd.read_csv('cylindre_plan_incline.csv', sep=";",decimal=",",encoding="utf-8") valeurs=mesures.values.tolist() t=[];x=[];y=[];L=[t,x,y] for i in range(len(valeurs)): t.append(valeurs[i][0]);x.append(valeurs[i][1]);y.append(valeurs[i][2])
- Pour les curieux, j'ai trouvé ça aussi https://youtu.be/kvEtFBxDgqI
Un peu d'histoire pour comprendre
Si vous voulez vous amuser à reproduire cette expérience et à trouver la position des 4 clochettes, voici un lien vers un dossier zippé contenant :
- un fichier wav qui fait "ding"
- un début de script qui produit 4 "ding"
A vous de le modifier pour permettre par exemple à l'utilisateur de saisir 4 valeurs pour les x1... x4 afin d'entendre 4 ding à intervalles réguliers ;). Je précise que Galilée recherche une durée constante entre chaque clochette ;)))
Attention, ce script utilise la bibliothèque playsound, j'ai dû l'installer!
Dossier zippé: musique_galilee.zip
Script fonctionnel
import matplotlib.pyplot as plt
import pandas as pd
mesures=pd.read_csv('cylindre_plan_incline.csv', sep=";",decimal=",",encoding="utf-8")
valeurs=mesures.values.tolist()
t=[];x=[];y=[];L=[t,x,y]
for i in range(len(valeurs)):
t.append(valeurs[i][0]);x.append(valeurs[i][1]);y.append(valeurs[i][2])
vx=[];vy=[];ax=[];ay=[]
for i in range (1,len(x)-1):
vx.append((x[i+1]-x[i-1])/(t[i+1]-t[i-1]))
vy.append((y[i+1]-y[i-1])/(t[i+1]-t[i-1]))
### TODO
# A compléter
plt.subplot(2,1,1);plt.title("Vitesse")
plt.quiver(x[1:-1],y[1:-1],vx,vy,color="green")
plt.axis('equal');plt.plot(x,y,"ro")
plt.subplot(2,1,2);plt.title("Accélération")
### TODO
# A compléter
plt.show()
Comprendre le script
- Lignes 1 et 2: import des bibliothèques
- Lignes 3 et 4: récupération des données du fichier csv => j'obtiens une liste de nom "valeurs"
- Ligne 6: déclaration de listes vides, une pour le temps, une pour les x et une pour les y. J'ai laissé la liste L qui est une liste contenant 3 sous-liste car elle était dans le script initiale, mais je ne m'en sers pas!
- Lignes 8 et 9: découpe en tranche ;)
- Ligne 12: déclaration de listes vides pour les composantes de la vitesse et de l'accélération
- Boucle de la ligne 13:
- Calculs des vitesses et mise en boite
- TODO à faire pour les accélérations
- Lignes de 19 à 21: représentation des vitesses. Vous chercherez le pourquoi du x[1:-1] car vous aurez besoin de ce concept pour l'accélération
- Lignes de 23 à...: TODO à faire pour l'accélération en partant des vitesses. Vous ne m'expliquerez pas votre vx[truc:bidule] ;)
- Ligne 27: affichage des graphiques (subplot c'est sous-graphique)