Objectif de la fiche : représenter les vecteurs vitesse d'un système modélisé par un point lors d'un mouvement, en réutilisant la boucle for déjà rencontrée.
Cette fiche est autonome : tu n'as besoin d'aucun autre document, tout ce qu'il faut est ci-dessous, y compris le rappel du script des fiches précédentes. L'étape contient un script incomplet à compléter, puis à copier-coller dans Thonny (ou dans la console Basthon tout en bas de la page si tu n'as pas Thonny sous la main).
On reprend là où on s'était arrêté
- Cette fiche prolonge la fiche n°3 : on repart des mêmes mesures de chute d'une bille, avec la boucle
fordéjà construite. - Le script ci-dessous est déjà complet : copie-le tel quel dans Thonny (ou dans Basthon) pour commencer, tu n'as rien à deviner ici.
- Garde cette fenêtre Thonny ouverte : tu vas modifier une seule ligne à l'étape suivante.
import numpy as np
import matplotlib.pyplot as plt
# Ordonnées pointées sur la chronophotographie (unités de la photo)
ymes = np.array([-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])
# Passage à l'échelle réelle (facteur 2/100)
yreelle = ymes * 2 / 100
# Base de temps : 16 instants entre 0 s et 0,25 s
t = np.linspace(0, 1/4, 16)
# Indices 0 à 14 (15 déplacements possibles) et abscisse nulle
n = np.arange(len(t) - 1)
x = 0 * t
Du déplacement à la vitesse
- Dans la fiche n°3, la longueur verticale de chaque flèche était le déplacement
yreelle[i+1]-yreelle[i]. Pour obtenir une vitesse, il faut diviser ce déplacement par la durée qu'il a pris :t[i+1]-t[i]. - Modifie le quatrième argument de
plt.arrowpour qu'il devienne(yreelle[i+1]-yreelle[i])/(t[i+1]-t[i]). Les trois premiers arguments ne changent pas. - Choisis un
head_width=0.002(plus petit qu'avant, car les vitesses sont des nombres bien plus grands que les déplacements). - Fixe les limites des axes avec
plt.xlim(-0.02, 0.02)etplt.ylim(-5, 0).
Pourquoi cette formule est-elle une vitesse ?
Une vitesse moyenne, c'est une distance parcourue divisée par la durée du parcours : v = Δy / Δt. Entre les points i et i+1, le déplacement vaut yreelle[i+1]-yreelle[i] et la durée vaut t[i+1]-t[i] : leur quotient donne la vitesse verticale moyenne sur ce petit intervalle. C'est une approximation (on suppose la vitesse constante entre les deux points), mais elle est d'autant meilleure que les points sont rapprochés.
for i in n :
plt.arrow(0, yreelle[i], 0, (yreelle[____]-yreelle[i])/(t[____]-t[i]), head_width=_____)
# TODO : fixe les limites des axes pour bien voir toutes les flèches
plt.xlim(_____, ____)
plt.ylim(__, __)
plt.show()
Indice
Les deux i+1 à compléter sont identiques à ceux que tu utilisais déjà dans la fiche n°3 pour yreelle[i+1] : le principe ne change pas, seul le fait de diviser par t[i+1]-t[i] est nouveau.
Une colonne de 15 flèches noires très fines, toujours empilées sur l'axe x = 0, mais beaucoup plus longues qu'à l'étape précédente : les vitesses (en m/s) sont numériquement bien plus grandes que les déplacements (en m).
Un constat qui prépare la suite
- Le rendu obtenu est peu lisible : toutes les flèches sont écrasées sur une même verticale, et il est difficile de distinguer leurs longueurs respectives.
- Ce problème vient du fait que le mouvement étudié ici est purement vertical (une seule dimension) : les vecteurs vitesse n'ont donc aucune composante horizontale pour se déployer dans le plan.
- La fiche suivante reprend exactement le même principe de boucle
foret deplt.arrow, mais appliqué à un mouvement à deux dimensions (la trajectoire d'une balle de golf) : le résultat sera bien plus lisible.
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.