Leçon 5 : Des formules sur des tableaux
Construis en Python le motif « Vague de pendules » et apprends en chemin :
- une formule de physique appliquée à tout un tableau
- np.round et print pour une vérification rapide
- plusieurs graphiques côte à côte avec plt.subplots
- les f-strings
- la phase : où en est un pendule dans son oscillation
Regarde-le d’abord
Lecture depuis YouTube après un clic.
"""Pendulum wave: 24 pendulums making 51, 52, ... 74 swings in 60 seconds.
Run: python pendulum-wave.py (needs: pip install numpy matplotlib)
"""
import numpy as np
import matplotlib.pyplot as plt
plt.style.use("dark_background")
g, cycle = 9.81, 60.0 # gravity in m/s^2, seconds until they are back in step
n = np.arange(51, 75) # swings per cycle, one more for each pendulum
period = cycle / n
length = g * (period / (2 * np.pi)) ** 2 # small swings: T = 2 pi sqrt(L / g)
print("lengths in cm:", np.round(length * 100, 1))
fig, axes = plt.subplots(1, 4, figsize=(12, 4), sharey=True)
for ax, t in zip(axes, [0, 15, 20, 30]):
swing = np.cos(2 * np.pi * t / period) # where each bob is, from -1 to 1
ax.scatter(swing, np.arange(len(n)), c=swing, cmap="cool", s=40)
ax.set_title(f"t = {t} s")
ax.set_xlim(-1.2, 1.2)
ax.axis("off")
plt.show()
# Try: t = 60 s (or 75, 80, 90): the same pictures again, as every count is whole
Pas de Python sur cet ordinateur ? Le notebook exécute le même script, les exercices et les réponses dans ton navigateur, sur Google Colab. Le notebook est en anglais.
Ligne par ligne
n = np.arange(51, 75)Les 24 nombres d’oscillations par minute : 51, 52, … 74.
period = cycle / nLa période de chaque pendule : 60 secondes divisées par son nombre d’oscillations.
length = g * (period / (2 * np.pi)) ** 2La formule du pendule pour de petites oscillations, T = 2π√(L / g), résolue pour la longueur L.
fig, axes = plt.subplots(1, 4, figsize=(12, 4), sharey=True)Une figure avec quatre graphiques côte à côte ; la boucle remplit un graphique par instant.
swing = np.cos(2 * np.pi * t / period)Où se trouve chaque masse à l’instant t, de −1 à 1 : après t / period oscillations, le cosinus d’autant de tours complets.
ax.set_title(f"t = {t} s")Une f-string insère la valeur de t dans le titre.
À toi de jouer
Quelle est la longueur du pendule le plus long et du plus court ?
Indice
Le script affiche les longueurs.
Réponse
34,4 cm pour 51 oscillations par minute, 16,3 cm pour 74.
Ajoute l’instant t = 12 s. En combien de groupes la rangée se partage-t-elle ?
Indice
Il te faut un cinquième graphique : plt.subplots(1, 5) et [0, 12, 15, 20, 30].
Réponse
Cinq : à 12 s, un cinquième de la minute, deux voisins sont décalés d’un cinquième d’oscillation.
Passe à 30 pendules.
Indice
Change la fin de np.arange.
Réponse
n = np.arange(51, 81) donne 30 nombres, de 51 à 80.
Quiz
Cartes mémoire
Lis le recto, dis-toi le verso, puis retourne la carte.
plt.subplots(1, 4)
Une figure et quatre graphiques (axes) sur une rangée, sur lesquels dessiner un par un.
f"t = {t} s"
Une f-string : la valeur de t prend la place de {t}.
Période d’un pendule
Pour de petites oscillations, T = 2π√(L / g) : quatre fois plus long veut dire deux fois plus lent.
Phase
Où en est un pendule dans son oscillation ; ici, le cosinus de 2π·t / T.
np.round(x, 1)
Arrondit chaque nombre d’un tableau à une décimale.