Index de l'article

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)