Activité
Établir un bilan énergétique
Consigne
Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.
Le script Ch16_bilan_basket.py (dossier scripts/) relit à l’énergie le pointage réel du chapitre 13 : le même ballon et la même table de mesures sont étudiés par un bilan énergétique. Il calcule , et au fil du vol ( kg). Un point de méthode, dit en une ligne : , construit « vers le point suivant », est la vitesse entre et — on la compare donc à l’altitude du milieu , pas à .
(La suite — moyenne, écart maximal et tracé des trois courbes — est fournie et n’est pas à modifier.)
Type : graphique Titre : Bilan énergétique du lancer réel (pointage du basket, ch. 13) Rôle : tester expérimentalement la conservation de sur un pointage réel.
- Axe horizontal : temps en s, de à environ s (commun aux deux panneaux).
- Axe vertical : énergie en J — panneau du bas de à J ; panneau du haut = agrandissement sur autour de J.
- Courbes : (rouge) décroissante puis croissante, (bleu) croissante puis décroissante, (vert, points) ~ constante ; tiretés = droite moyenne J.
- Résultat lisible : et s’échangent ( minimal / maximal au sommet, vers s) ; reste sur la droite moyenne, écart % au plus, sans tendance.
Questions :
- Compléter les deux lignes ( à partir de et ; avec l’altitude du milieu).
- Exécuter : que valent la moyenne de et l’écart maximal ? Les fluctuations ont-elles une tendance ?
- Décrire les courbes et : que font-elles au sommet du vol ? Que vaut leur somme ?
- Remplacer
zmilparz[i]et ré-exécuter : monte régulièrement de à J. L’énergie n’est pourtant pas apparue de nulle part — expliquer l’artefact.
O5 - Python et O4 - Incertitudes : les outils nécessaires y sont rappelés.
Script élève
# -*- coding: utf-8 -*-
# Chapitre 16 — Bilan énergétique du lancer de basket
# Le pointage réel du chapitre 13, relu à l'énergie : on calcule Ec,
# Epp et Em au fil du vol. Attention : v_i est la vitesse ENTRE M_i et
# M_i+1 — on la compare donc à l'altitude du MILIEU.
import matplotlib.pyplot as plt
m = 0.62 # masse du ballon (kg)
g = 9.81
dt = 0.04
t = []
for i in range(26):
t.append(dt * i)
x = [0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4,
2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0]
z = [1.800, 2.032, 2.249, 2.449, 2.635, 2.804, 2.958, 3.096, 3.218,
3.325, 3.416, 3.491, 3.551, 3.595, 3.623, 3.636, 3.633, 3.614,
3.580, 3.530, 3.464, 3.383, 3.285, 3.173, 3.044, 2.900]
tm = []
Ec = []
Epp = []
Em = []
for i in range(len(t) - 1):
vx = (x[i+1] - x[i]) / dt
vz = (z[i+1] - z[i]) / dt
zmil = (z[i] + z[i+1]) / 2 # altitude du MILIEU de l'intervalle
Ec.append(0) # énergie cinétique # À COMPLÉTER
Epp.append(0) # énergie potentielle # À COMPLÉTER
Em.append(Ec[i] + Epp[i])
tm.append(t[i] + dt / 2)
somme_Em = 0.0
for energie in Em:
somme_Em = somme_Em + energie
moy = somme_Em / len(Em)
Em_min = Em[0]
Em_max = Em[0]
ecart_max = 0.0
for energie in Em:
if energie < Em_min:
Em_min = energie
if energie > Em_max:
Em_max = energie
ecart = energie - moy
if ecart < 0:
ecart = -ecart
if ecart > ecart_max:
ecart_max = ecart
print("Em : min =", Em_min, "J ; max =", Em_max, "J ; moyenne =", moy, "J")
print("écart max à la moyenne :", 100 * ecart_max / moy, "%")
plt.plot(tm, Ec, "o-", ms=3, label="Ec")
plt.plot(tm, Epp, "o-", ms=3, label="Epp (origine au sol)")
plt.plot(tm, Em, "o-", ms=3, label="Em = Ec + Epp")
plt.axhline(moy, color="gray", linestyle="--", lw=1)
plt.xlabel("t (s)")
plt.ylabel("énergie (J)")
plt.legend()
plt.grid(True)
plt.title("Le bilan énergétique du lancer (pointage réel)")
plt.show()