Objectif de la fiche : prendre du recul sur les fiches précédentes en identifiant deux difficultés classiques lors de l'exploitation de mesures issues d'une chronophotographie — ou de toute série de mesures expérimentales.
Cette fiche est autonome : elle ne demande pas d'écrire de nouveau code, mais de comprendre et interpréter deux situations concrètes. Quelques scripts illustratifs, déjà complets, permettent de rejouer ces situations toi-même dans Thonny (ou dans la console Basthon tout en bas de la page).
Premier écueil : un échantillonnage trop court
- Le fichier utilisé dans la fiche n°3 « Étude d'une trajectoire parabolique » fournissait les positions de la balle de golf toutes les
0,10 s. Le fichier original, lui, donnait en réalité une position toutes les0,033 s— trois fois plus de points. - Avoir plus de points peut sembler toujours préférable. Mais le calcul de l'accélération repose sur des différences de différences de positions : si les points sont très rapprochés, l'écart entre deux positions consécutives devient minuscule — du même ordre de grandeur que l'incertitude de pointage elle-même (quelques millimètres à quelques centimètres, selon la qualité de la vidéo).
- Quand le bruit de mesure devient comparable au signal qu'on essaie de mesurer, le résultat du calcul n'a plus vraiment de sens : les vecteurs accélération obtenus pointent alors dans des directions quasi aléatoires, sans lien clair avec la réalité physique.
import numpy as np
import matplotlib.pyplot as plt
# Même trajectoire que la fiche n°3, mais échantillonnée 3 fois plus finement (0,033 s)
# + un bruit de pointage réaliste, de quelques centimètres
t = 0.033 * np.arange(43)
vx = 4.86
x = vx * t
y = 0.19 * x * (6.8 - x)
np.random.seed(3)
x = x + np.random.normal(0, 0.02, len(t))
y = y + np.random.normal(0, 0.02, len(t))
# Exactement le même script de calcul des vecteurs accélération que la fiche n°3
vxl = []
m = np.arange(len(t) - 2)
for i in m :
vxl.append((x[i+2] - x[i]) / (t[i+2] - t[i]))
vyl = []
for i in m :
vyl.append((y[i+2] - y[i]) / (t[i+2] - t[i]))
axl = []
m = np.arange(len(t) - 4)
for i in m :
axl.append((vxl[i+2] - vxl[i]) / (t[i+2] - t[i]))
ayl = []
for i in m :
ayl.append((vyl[i+2] - vyl[i]) / (t[i+2] - t[i]))
plt.plot(x, y, 'b-')
for i in np.arange(1, len(t)-4) :
plt.arrow(x[i+2], y[i+2], 0.05*axl[i], 0.05*ayl[i], head_width=0.05)
plt.xlim(0, 7)
plt.ylim(0, 3)
plt.grid()
plt.show()
Copie ce script dans Thonny ou Basthon et exécute-le : les flèches obtenues pointent dans toutes les directions, sans cohérence apparente. Essaie ensuite de commenter les deux lignes qui ajoutent du bruit (np.random.normal(...)) et relance le script : les flèches redeviennent parfaitement verticales. La différence ne vient donc pas de la trajectoire elle-même, mais du rapport entre le bruit de mesure et l'écart entre deux points.
- Avec un tel résultat, il devient difficile de convaincre qui que ce soit que la force subie par la balle est verticale et dirigée vers le bas — pourtant, c'est bien le cas en réalité.
- Le bon réflexe : choisir un intervalle de temps entre les points assez grand pour que les déplacements mesurés restent nettement supérieurs à l'incertitude de pointage — sans pour autant l'exagérer, sous peine de perdre en précision sur la description du mouvement.
Second écueil : la démarche circulaire
- Face à des vecteurs accélération chaotiques comme à l'écueil précédent, la tentation peut être grande de « nettoyer » les données en remplaçant les positions mesurées par des positions théoriques, calculées à partir d'une formule mathématique plutôt que pointées sur la vidéo.
- Le résultat serait effectivement très satisfaisant visuellement : des vecteurs bien nets, tous verticaux, tous de longueur comparable.
import numpy as np
import matplotlib.pyplot as plt
# Une trajectoire purement mathématique, sans aucune mesure derrière elle
t = 0.1 * np.arange(15)
vx = 4.86
x = vx * t
y = 0.19 * x * (6.8 - x) # une parabole, choisie à l'avance
vxl, vyl = [], []
m = np.arange(len(t) - 2)
for i in m :
vxl.append((x[i+2] - x[i]) / (t[i+2] - t[i]))
vyl.append((y[i+2] - y[i]) / (t[i+2] - t[i]))
axl, ayl = [], []
m = np.arange(len(t) - 4)
for i in m :
axl.append((vxl[i+2] - vxl[i]) / (t[i+2] - t[i]))
ayl.append((vyl[i+2] - vyl[i]) / (t[i+2] - t[i]))
plt.plot(x, y, 'ro-')
for i in np.arange(1, len(t)-4) :
plt.arrow(x[i+2], y[i+2], 0.1*axl[i], 0.1*ayl[i], head_width=0.05)
plt.grid()
plt.show()
Ce script produit un graphe esthétiquement parfait, mais il ne prouve strictement rien. La position y a été calculée avec une formule en x² (une parabole) posée à l'avance. Il n'est donc pas surprenant que l'accélération recalculée à partir de cette trajectoire soit parfaitement verticale et constante : c'est une conséquence mathématique directe de la formule choisie au départ, pas une découverte physique.
- Le raisonnement devient circulaire : on suppose que la trajectoire est parabolique (donc que l'accélération est verticale et constante) pour ensuite « démontrer » que l'accélération est bien verticale et constante. La conclusion était déjà contenue dans l'hypothèse de départ.
- Utiliser une telle construction avec des données réelles présentées comme si elles venaient d'une mesure serait trompeur, et contre-productif du point de vue de l'acquisition d'une véritable démarche scientifique : la science avance en confrontant des hypothèses à des mesures indépendantes de ces hypothèses, jamais en fabriquant les données qui les confirment.
À retenir
- Choisis un intervalle de temps entre les points de mesure nettement supérieur à l'incertitude de pointage, pour que les déplacements calculés restent significatifs face au bruit.
- Si des vecteurs accélération semblent erratiques, ne conclus pas trop vite à un échec de la physique sous-jacente : interroge d'abord la qualité de l'échantillonnage et l'ampleur du bruit de mesure.
- N'utilise jamais une trajectoire théorique, construite à partir de l'hypothèse qu'on cherche à vérifier, pour « illustrer » ou « confirmer » cette même hypothèse. Les données doivent toujours provenir d'une mesure indépendante de ce qu'on cherche à démontrer.
Pense-bête — lire un résultat d'un œil critique
| vecteurs erratiques | souvent un signe de bruit > signal, pas d'erreur de physique |
| Δt trop petit | amplifie l'effet du bruit de pointage |
| Δt trop grand | perd en précision sur la description du mouvement |
| donnée mesurée | vient d'une observation indépendante |
| donnée fabriquée | vient d'une formule choisie à l'avance |
| raisonnement circulaire | la conclusion était déjà dans l'hypothèse |
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.