Physique-chimie · Terminale · Enseignement de spécialité · Fiche n°8

Une énergie
qui se transforme.

Pendant qu'une balle de golf monte puis redescend, son énergie cinétique et son énergie potentielle de pesanteur varient sans cesse — l'une augmentant quand l'autre diminue. Leur somme, l'énergie mécanique, devrait rester constante si le poids est la seule force qui compte vraiment. À toi de le vérifier, à partir de mesures obtenues par chronophotographie.

energies.py — aperçuEm = constante
Ec Ep Em

Objectif de la fiche : représenter, à partir de données expérimentales, l'évolution des grandeurs énergétiques (cinétique, potentielle, mécanique) d'un système en mouvement dans un champ de pesanteur uniforme, pour tester l'hypothèse de la conservation de l'énergie mécanique.

Cette fiche est autonome : tu n'as besoin d'aucun autre document, les coordonnées obtenues par pointage vidéo sont recopiées directement dans le script. Chaque é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).

+

Contexte : les trois énergies d'un projectile

À savoir
  • Une balle de golf en vol possède une énergie cinétique Ec = ½·m·v², liée à sa vitesse, et une énergie potentielle de pesanteur Ep = m·g·y, liée à son altitude. Leur somme est l'énergie mécanique Em = Ec + Ep.
  • Si le poids est la seule force qui agit vraiment sur la balle (on néglige les frottements de l'air), l'énergie mécanique doit rester constante tout au long du vol : ce que l'un des deux termes perd, l'autre le gagne.
  • Une analyse cinématique du même mouvement (non reprise ici) montre que l'accélération de la balle est pratiquement verticale et proche de -g — un résultat cohérent avec l'hypothèse d'un poids seul. Cette fiche teste cette même hypothèse, mais d'un autre point de vue : celui de l'énergie.
00

Les données du pointage

À savoir
  • Ces coordonnées (x, y), exprimées en mètres, proviennent d'un pointage vidéo de la balle de golf image par image ; t contient les instants correspondants, espacés de 0,1 s (13 points au total).
  • Le script ci-dessous est déjà complet : copie-le tel quel dans Thonny (ou dans Basthon) pour commencer.
etape0_donnees.py
import numpy as np
import matplotlib.pyplot as plt

# valeurs expérimentales (pointage vidéo)
x = np.array([0.41, 0.91, 1.39, 1.86, 2.33, 2.81, 3.33, 3.79, 4.31, 4.83, 5.36, 5.86, 6.34])
y = np.array([0.52, 1.01, 1.42, 1.77, 2.02, 2.16, 2.19, 2.13, 1.96, 1.71, 1.38, 0.97, 0.50])
t = 0.1 * np.arange(len(x))
01

Construire les vecteurs vitesse

À savoir
  • La vitesse n'est pas mesurée directement : on l'estime par une différence centrée. Pour approcher la vitesse horizontale au point i+1, on compare la position juste avant (i) et juste après (i+2) : vx ≈ (x[i+2] - x[i]) / (t[i+2] - t[i]).
  • Ce calcul a besoin d'un point avant et d'un point après : il est donc impossible de l'effectuer sur le tout premier point (pas de point avant) ni sur le tout dernier (pas de point après). C'est pourquoi la boucle porte sur len(t) - 2 valeurs : la liste des vitesses obtenue aura systématiquement deux valeurs de moins que celle des positions.
Consigne
  • Construis vxl et vyl par différences centrées, à l'aide d'une boucle for et de .append(...).
  • Convertis ensuite ces deux listes en tableaux numpy avec np.array(...), en les nommant vxll et vyll : c'est indispensable pour pouvoir effectuer des opérations terme à terme dessus (les élever au carré, les sommer, en prendre la racine) — des opérations qu'une simple liste Python ne sait pas faire directement.
etape1_vecteurs_vitesse.py
vxl = []
m = np.arange(len(t) - _)
for i in m :
    vx = (x[i+_] - x[_]) / (t[i+_] - t[_])
    vxl.append(__)
vxll = np.array(___)

vyl = []
for i in m :
    vy = (y[i+_] - y[_]) / (t[i+_] - t[_])
    vyl.append(__)
vyll = np.array(___)
Indice

vxl et vyl sont des listes Python ordinaires, sur lesquelles vxl**2 provoquerait une erreur : seuls les tableaux numpy (np.array) acceptent ce genre d'opération élément par élément. C'est tout l'intérêt de vxll et vyll.

Résultat attendu

vxll et vyll contiennent chacun 11 valeurs (13 points de départ, moins 2). Pour vérifier : vxll[0] doit valoir 4.9 et vyll[0] doit valoir 4.5 (en m/s).

02

Calculer les trois énergies

Consigne
  • Fixe la masse d'une balle de golf, m = 0.046 (kg), et g = 9.8.
  • Calcule la norme de la vitesse v = (vxll**2 + vyll**2)**(1/2), puis l'énergie cinétique ec = 0.5*m*v**2.
  • Comme vxll et vyll ont 2 valeurs de moins que y et t (à cause du redimensionnement des différences centrées), crée y2 = y[1:-1] et t2 = t[1:-1] — en retirant le premier et le dernier élément — pour que toutes les grandeurs se correspondent.
  • Calcule l'énergie potentielle ep = m*g*y2, puis l'énergie mécanique em = ec + ep.
etape2_energies.py
m = _____
g = ___

# TODO : norme de la vitesse et énergie cinétique
v = (vxll**_ + vyll**_)**(1/_)
ec = 0.5*m*v**_

# TODO : redimensionne y et t pour qu'ils correspondent à vxll/vyll
y2 = y[_:__]
t2 = t[_:__]

# TODO : énergie potentielle et énergie mécanique
ep = m*g*__
em = __ + __
Résultat attendu

Aucun affichage direct, mais ec, ep et em contiennent chacune 11 valeurs, prêtes à être tracées à l'étape suivante. Pour vérifier : ec[0] ≈ 1.02, ep[0] ≈ 0.455 et em[0] ≈ 1.47 (en joules).

03

Tracer et tester la conservation

À savoir
  • np.polyfit(t2, em, 0) ajuste les points (t2, em) par un polynôme de degré 0, c'est-à-dire une constante — concrètement, la valeur qui minimise les écarts avec toutes les mesures, ce qui correspond à leur moyenne. La fonction renvoie une liste d'un seul coefficient, qu'on récupère avec mod[0].
  • Pour tracer une droite horizontale à cette hauteur sur toute la durée du mouvement, on construit un tableau de la même taille que t2 mais rempli de zéros décalés de cette constante : 0*t2 + mod[0].
Consigne
  • Trace ec, ep et em en fonction de t2, respectivement en bleu, vert et rouge (points reliés, 'bo-', 'go-', 'ro-'), avec une légende pour chacune.
  • Pour tester quantitativement si em reste constante, modélise-la par une constante avec np.polyfit(t2, em, 0), et superpose cette droite horizontale, en noir, avec la légende 'Modèle'.
etape3_trace_modele.py
plt.plot(t2, ec, '____', label='__')
plt.plot(t2, ep, '____', label='__')
plt.plot(t2, em, '____', label='__')

# TODO : modélise em par une constante
mod = np.polyfit(__, __, _)
emmod = 0*t2 + mod[_]
plt.plot(t2, emmod, '_', label='_______')

plt.xlabel("temps")
plt.ylabel("énergie")
plt.title("évolution des énergies au cours du mouvement")
plt.legend()
plt.grid()
plt.show()
Résultat attendu

La courbe bleue (Ec) descend puis remonte, la verte (Ep) fait l'inverse — exactement le comportement attendu d'un échange d'énergie. La courbe rouge (Em) oscille légèrement autour de la droite noire du modèle, sans tendance nette à la hausse ou à la baisse.

+

Conclusion

À retenir
  • On observe que l'énergie mécanique n'évolue pas significativement au cours du temps, car on ne note aucune tendance marquée, notamment à la baisse — ce qui aurait pu trahir l'action de frottements dissipatifs.
  • Ce résultat est cohérent avec l'hypothèse d'un poids agissant seul sur la balle : les petites fluctuations observées autour du modèle constant s'expliquent raisonnablement par les incertitudes de pointage, plutôt que par une réelle perte d'énergie.

Pense-bête — énergie cinétique, potentielle, mécanique

Ec = ½·m·v²énergie cinétique
Ep = m·g·yénergie potentielle de pesanteur
Em = Ec + Epénergie mécanique
np.array(liste)convertit une liste en tableau, pour les opérations terme à terme
y[1:-1]retire le premier et le dernier élément
(x[i+2]-x[i])/(t[i+2]-t[i])différence centrée : approxime une vitesse instantanée
np.polyfit(x,y,0)ajuste par une constante = la moyenne de y ; valeur dans mod[0]
Em constantesignature de la conservation de l'énergie mécanique

Pas de Thonny sous la main ? Utilise Basthon

Ouvrir dans un nouvel onglet ↗
Basthon est une console Python qui tourne directement dans le navigateur, sans rien installer. Colle ici (avec 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.