Chapitre 13

Activités Python

Cinématique et inertie

Activité

Exploiter un pointage de basket

Consigne

Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.

Le script Ch13_basket.py (dossier scripts/) exploite le pointage réel d’un lancer de basket (Δt=0,04\Delta t = 0{,}04 s, 26 positions) : il calcule les coordonnées de v\vec v puis de a\vec a par taux de variation vers le point suivant (méthode A) et trace les deux familles de vecteurs le long de la trajectoire — c’est la capacité numérique officielle du programme. Il s’exécute tel quel, à deux lignes près (# À COMPLÉTER).

(La suite — affichage et tracé des vecteurs — est fournie et n’est pas à modifier.)

Questions :

  1. Compléter les deux lignes du calcul de vxv_x et vzv_z (taux de variation vers le point suivant, comme la méthode A).
  2. Exécuter : que valent vxv_x et aza_z le long du vol ? Décrire les vecteurs tracés.
  3. Le sommet de la trajectoire : que vaut v\vec v à cet instant ? Et a\vec a ? Commenter la phrase « au sommet, le ballon est immobile ».

O5 - Python. Listes, append, boucles sur indices : tout y est rappelé.

Script élève

# -*- coding: utf-8 -*-
# Chapitre 13 — Vecteurs vitesse et accélération d'un ballon
# Pointage vidéo réel : positions (x, z) du centre du ballon toutes les
# 0,04 s. On calcule les coordonnées de v puis de a par taux de variation
# vers le point suivant, et on trace les vecteurs le long de la trajectoire.

import matplotlib.pyplot as plt

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]

# --- vitesses : taux de variation vers le point suivant ---
vx = []
vz = []
for i in range(len(t) - 1):
    vx.append(0)   # À COMPLÉTER
    vz.append(0)   # À COMPLÉTER

# --- accélérations : même principe, sur les vitesses ---
ax = []
az = []
for i in range(len(vx) - 1):
    ax.append((vx[i+1] - vx[i]) / dt)
    az.append((vz[i+1] - vz[i]) / dt)

vx_min = vx[0]
vx_max = vx[0]
for valeur in vx:
    if valeur < vx_min:
        vx_min = valeur
    if valeur > vx_max:
        vx_max = valeur
az_min = az[0]
az_max = az[0]
somme_az = 0.0
for valeur in az:
    if valeur < az_min:
        az_min = valeur
    if valeur > az_max:
        az_max = valeur
    somme_az = somme_az + valeur
print("vx : de", vx_min, "à", vx_max, "m/s")
print("az : de", az_min, "à", az_max, "m/s2")
print("az moyen :", somme_az / len(az), "m/s2")

# --- tracé : trajectoire + vecteurs (1 point sur 3) ---
plt.plot(x, z, "k.", ms=4)
for i in range(0, len(ax), 3):
    plt.arrow(x[i], z[i], 0.06 * vx[i], 0.06 * vz[i],
              head_width=0.03, color="teal")
    plt.arrow(x[i], z[i], 0.02 * ax[i], 0.02 * az[i],
              head_width=0.03, color="red")
plt.xlabel("x (m)")
plt.ylabel("z (m)")
plt.title("v (bleu) tangent, a (rouge) vertical vers le bas")
plt.axis("equal")
plt.grid(True)
plt.show()

← Retour au portail du chapitre