Objectif de la fiche : exploiter un tableau de positions successives d'une fusée (Ariane 5) pour en tracer la position puis la vitesse en fonction du temps, à l'aide du langage Python.
Cette fiche est autonome : tu n'as besoin d'aucun autre document, les données sont recopiées directement dans le script (pas besoin de fichier tableur). 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).
Les données du décollage
- Le tableau ci-dessous est extrait d'un sujet de baccalauréat 2012 : il donne la position corrigée d'un point situé au bas de la fusée Ariane 5, toutes les 0,2 seconde après le décollage.
- Dans un contexte professionnel, ces données viendraient souvent d'un fichier tableur (
.xlsx), chargé en Python avec le moduleopenpyxl. Ici, pour rester autonome sans avoir besoin d'un fichier séparé, on les recopie directement dans unnp.array— une méthode tout aussi valable, mentionnée explicitement dans le document source. - Le script ci-dessous est déjà complet : copie-le tel quel dans Thonny (ou dans Basthon) pour commencer.
Tableau des positions
Le temps est exprimé en secondes, la position en mètres.
| t (s) | 0 | 0,2 | 0,4 | 0,6 | 0,8 | 1 | 1,2 | 1,4 | 1,6 | 1,8 | 2 | 2,2 | 2,4 | 2,6 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| z (m) | 0 | 0,06 | −0,04 | 0,06 | −0,04 | 0,12 | 1,01 | 1,96 | 3,35 | 4,62 | 6,39 | 8,47 | 10,69 | 12,97 |
| t (s) | 2,8 | 3 | 3,2 | 3,4 | 3,6 | 3,8 | 4 | 4,2 | 4,4 | 4,6 | 4,8 | 5 | 5,2 | 5,4 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| z (m) | 16,13 | 19,42 | 23,09 | 26,76 | 30,93 | 35,24 | 39,92 | 44,85 | 49,85 | 55,42 | 61,3 | 67,5 | 74,33 | 81,48 |
Remarque : les toutes premières valeurs de z oscillent autour de 0 (bruit de mesure au moment du décollage), avant que la fusée ne prenne franchement de l'altitude.
import numpy as np
import matplotlib.pyplot as plt
# Temps écoulé depuis le décollage (s)
t = np.array([0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4, 1.6, 1.8, 2, 2.2, 2.4, 2.6, 2.8, 3,
3.2, 3.4, 3.6, 3.8, 4, 4.2, 4.4, 4.6, 4.8, 5, 5.2, 5.4])
# Position du bas de la fusée (m)
z = np.array([0, 0.06, -0.04, 0.06, -0.04, 0.12, 1.01, 1.96, 3.35, 4.62, 6.39, 8.47,
10.69, 12.97, 16.13, 19.42, 23.09, 26.76, 30.93, 35.24, 39.92, 44.85, 49.85,
55.42, 61.3, 67.5, 74.33, 81.48])
print('nombre de valeurs :', len(t), len(z))
La console affiche nombre de valeurs : 28 28 — les deux tableaux t et z ont bien la même longueur, condition indispensable pour tout tracé avec plt.plot.
Tracer la position en fonction du temps
- Trace
zen fonction det, avec des points bleus (indice'bo'). - Ajoute les étiquettes des axes (
"temps (s)"/"position (m)") et une grille.
# TODO : trace z en fonction de t, en points bleus
plt.plot(____, ____, '__')
plt.xlabel("____")
plt.ylabel("____")
plt.grid()
plt.show()
Une courbe quasiment plate et bruitée pendant la première seconde (la fusée est encore proche du sol), puis une montée de plus en plus rapide : la signature d'une accélération croissante, typique d'un décollage.
En déduire la vitesse avec np.diff
- La fonction
np.diff(z)calcule directement la différence entre chaque valeur et la précédente :z[1]-z[0],z[2]-z[1], etc. C'est une autre façon d'obtenir les déplacements successifs, sans écrire de bouclefortoi-même. - Comme l'intervalle de temps est constant (
0,2 sentre deux mesures), divise ce résultat par0.2pour obtenir une véritable vitesse en m/s. np.diffrenvoie un tableau avec un élément de moins que le tableau de départ (27 valeurs à partir de 28) : il faut donc aussi redimensionnerten lui retirant son dernier élément, avect[:27], avant de tracer.- Trace la vitesse obtenue en fonction de
t0, en croix rouges ('rx').
# TODO : différences successives de z, converties en vitesse (Δt = 0,2 s)
vz = np.diff(__) / ___
# TODO : réduis t d'une valeur pour qu'il ait la même longueur que vz
t0 = t[:__]
# TODO : trace la vitesse en fonction de t0, en croix rouges
plt.plot(____, ____, '__')
plt.xlabel("____")
plt.ylabel("____")
plt.grid()
plt.show()
Indice
t contient 28 valeurs, vz en contient 27 : t[:27] garde les 27 premières valeurs de t, associées aux 27 vitesses calculées entre chaque paire de points consécutifs.
Un nuage de croix rouges globalement croissant : la vitesse de la fusée augmente au cours du temps, de plus en plus vite vers la fin — cohérent avec une accélération qui s'intensifie à mesure que le carburant est consommé.
Pour aller encore plus loin
- À partir des deux graphes obtenus (position et vitesse), il est possible d'estimer l'accélération de la fusée (en réappliquant la même méthode de différences successives, cette fois à
vz). - Connaissant la masse d'Ariane 5 au décollage, la seconde loi de Newton permet ensuite d'estimer la somme des forces qui s'exercent sur la fusée, et donc la force de réaction des moteurs au moment du décollage.
- Ce travail peut se comparer à des estimations obtenues directement à partir de photographies du décollage : une belle occasion de mener un petit projet personnel, à la maison ou en classe.
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.