Objectif de la fiche : représenter les positions successives d'un système modélisé par un point (ici, une bille) lors d'une évolution unidimensionnelle, à l'aide du langage Python.
Tu vas travailler avec deux bibliothèques : numpy pour manipuler des tableaux de nombres, et matplotlib.pyplot pour tracer des graphiques. Chaque étape ci-dessous contient un script incomplet : à toi de le compléter, puis de le copier-coller dans Thonny (ou dans la console Basthon tout en bas de la page si tu n'as pas Thonny sous la main).
Premiers tableaux
- Complète les deux lignes
importpour charger numpy sous le nomnpet la fonction pyplot de matplotlib sous le nomplt. - Reporte dans
ymesles 16 valeurs du tableau de mesures ci-dessous. La première vaut 0. - Vérifie ta saisie avec
printavant de passer à l'étape suivante.
D'où viennent ces mesures ?
Sur une chronophotographie (photo imprimée, ou vidéo ouverte dans un logiciel de pointage), les positions successives de la balle ont été pointées à intervalles de temps égaux, puis relevées dans un tableau : c'est ce tableau que tu vas maintenant saisir et exploiter avec Python. Le point n°0, en haut de la chute, est pris comme origine (y = 0) ; les valeurs suivantes sont négatives car l'axe des ordonnées est orienté vers le haut alors que la bille descend.
| point n° | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| y mesuré | 0 | −0,7 | −1,5 | −2,3 | −3,5 | −4,5 | −5,9 | −7,7 | −8,8 | −10,6 | −12,3 | −14,2 | −16,4 | −18,5 | −21 | −23,5 |
Remarque : les valeurs sont de plus en plus négatives, et l'écart entre deux points consécutifs augmente d'un point au suivant — la bille accélère au cours de sa chute.
# TODO : importe numpy sous le nom np
import ____ as ____
# TODO : importe la fonction pyplot du module matplotlib sous le nom plt
import ____.____ as ____
# Ordonnées pointées sur la chronophotographie
# Reporte ici les valeurs lues dans le tableau de mesures ci-dessus
ymes = np.array([-0, ____, ____, ____, ____, ____, ____, ____,
____, ____, ____, ____, ____, ____, ____, ____])
print('ymes :', ymes)
Indice
En Python, les virgules séparent les éléments d'un tableau et le point sert de séparateur décimal (2.5 et non 2,5, et -0.7 pour −0,7). N'oublie pas les guillemets autour du texte passé à print.
Construire la base de temps
- L'expérience dure
0,25 set compte16points de mesure. - Utilise
np.linspace(début, fin, nombre_de_points)pour engendrer les 16 instants correspondants. - Ajoute une ligne
printpour vérifier que le tableautcontient bien 16 valeurs entre 0 et 0,25.
# (reprends les imports et le tableau ymes de l'étape 1 au-dessus de ce script)
# TODO : complète np.linspace avec le début, la fin, et le nombre de points
t = np.linspace(____, ____, ____)
print('t :', t)
Indice
16 points de mesure ne veut pas dire 16 intervalles : np.linspace prend directement le nombre de points à engendrer, du début à la fin inclus.
Premier graphe
- Utilise
plt.figure()pour ouvrir une nouvelle fenêtre graphique, puisplt.plot(x, y)pour tracer les positions mesuréesymesen fonction du tempst. - N'oublie pas
plt.show()à la fin, sinon le graphe ne s'affichera pas dans Thonny.
# TODO : ouvre une nouvelle figure, puis trace ymes en fonction de t
plt.figure()
plt.plot(____, ____)
plt.show()
Une courbe qui descend de plus en plus vite, avec des valeurs de plus en plus négatives : c'est le signe d'une vitesse qui augmente au cours de la chute. Si la courbe est plate ou remonte, relis les valeurs de ymes.
Passer à l'échelle réelle et personnaliser le graphe
- L'échelle de la photo est de
2/100. Calculeyreelleen multipliantymespar ce facteur. - Trace
yreelleen fonction detavec des ronds rouges (indice :'ro') et une légende"y=f(t)". - Complète les étiquettes des axes, la grille, la légende et le titre
"chute libre".
# TODO : calcule le tableau des ordonnées réelles (facteur d'échelle 2/100)
yreelle = ymes * (____ / ____)
# TODO : trace yreelle en fonction de t, en ronds rouges, avec une légende
plt.plot(____, ____, '__', label="____")
# TODO : personnalise le graphe
plt.xlabel("____")
plt.ylabel("____")
plt.grid()
plt.legend()
plt.title("____")
plt.show()
Indice
Le marqueur 'ro' se lit lettre par lettre : red (couleur) et o (gros point). Le pense-bête juste en dessous liste les autres combinaisons possibles.
Pense-bête — plt.plot(x, y, 'couleur+marqueur')
| 'r' | red — rouge |
| 'k' | black — noir |
| 'b' | blue — bleu |
| 'y' | yellow — jaune |
| 'g' | green — vert |
| 'o' | gros point (rond) |
| '-' | ligne continue |
| '.' | pointillé |
| 'x' | croix |
| 's' | carré (square) |
| 'v' | triangle |
Pour aller plus loin (facultatif)
- La fonction
np.diff(tableau)calcule la différence entre chaque valeur successive d'un tableau. - La vitesse moyenne entre deux instants s'écrit
v = Δy / Δt. Utilisenp.diffsuryreelleet surtpour construire un tableauv. vcontient un point de moins quet: on le trace donc en fonction det[1:](le tableautprivé de son premier élément).
# TODO : calcule la vitesse moyenne entre deux points successifs
v = np.diff(____) / np.diff(____)
# TODO : trace v en fonction de t[1:], en croix noires par exemple
plt.plot(____, v, '__')
plt.xlabel("temps (s)")
plt.ylabel("vitesse (m/s)")
plt.title("____")
plt.show()
Indice
Si la bille tombe bien en chute libre, les points de ce graphe devraient s'aligner à peu près sur une droite : une piste pour une prochaine fiche.
Pas de Thonny sous la main ? Utilise Basthon
Ouvrir dans un nouvel onglet ↗Ctrl+V ou Cmd+V) le code copié avec les boutons « Copier le code » ci-dessus, puis appuie sur Entrée pour l'exécuter.