Le poids est-il proportionnel à la masse ? Et que devient-il sur un autre astre ou loin de la surface de la Terre ?
Objectifs
- Mesurer la valeur d'un poids avec un dynamomètre.
- Établir expérimentalement la relation \(P = m\,g\) et déterminer \(g\).
- Utiliser la loi de gravitation pour calculer \(g\) sur différents astres et en altitude.
- Exploiter un graphique et repérer des erreurs d'unités dans un programme.
Compétences travaillées
- Réaliser : mesurer avec un dynamomètre, programmer.
- Analyser : reconnaître une proportionnalité sur un graphique.
- Valider : comparer une valeur expérimentale à une valeur de référence.
- Communiquer : présenter un graphique avec mesures et modèle.
Le code s'exécute réellement dans ton navigateur. Au premier clic sur ▶ Exécuter, Python se télécharge (≈ 7 Mo, une seule fois, connexion Internet nécessaire). Le bouton Télécharger .py donne un fichier utilisable dans EduPython, Thonny, Basthon ou Capytale.
Raccourcis : Ctrl + Entrée exécute, Tab décale la ligne de 4 espaces.
Débutant en Python : fais les cinq activités dans l'ordre, en t'aidant des indices. À l'aise avec les variables et les boucles (en général à partir du deuxième trimestre) : l'activité 1 est facultative, commence directement à l'activité 2 et vise l'activité 5 sans indice.
Matériel
- une potence et sa noix de serrage ;
- un dynamomètre gradué de 0 à 5 N (précision 0,02 N ou 0,05 N) ;
- des masses marquées à crochet : 50 g, 100 g, 200 g ;
- une balance électronique (pour vérifier les masses).
Protocole
| \(m\) (g) | 50 | 100 | 150 | 200 | 250 | 300 |
|---|---|---|---|---|---|---|
| \(P\) mesuré (N) |
Jeu de données pédagogique Les programmes contiennent les mesures suivantes, construites à partir de \(P = m\,g\) avec de petits écarts réalistes (lecture à ± 0,02 N près) : 0,48 ; 0,99 ; 1,46 ; 1,97 ; 2,44 ; 2,95 N. Remplace-les par tes propres mesures si tu as fait l'expérience.
Si le zéro est mal réglé, toutes les mesures sont décalées de la même quantité : c'est une erreur systématique. Lire en biais provoque une erreur de parallaxe : l'index paraît face à une autre graduation. Ces deux précautions réduisent les erreurs de mesure.
Il convertit une masse de grammes en kilogrammes, puis calcule le poids \(P = m\,g\). Pourquoi ? Pour prévoir ce qu'indiquera le dynamomètre avant de faire la mesure. Comment lire le résultat ? Une valeur en newtons, à comparer avec ta mesure.
À faire :
- Exécute le programme : le poids affiché est-il plausible pour une masse de 250 g ?
- Corrige la ligne de conversion pour que
m_kgsoit vraiment en kilogrammes. - Ajoute le calcul du poids de la même masse sur la Lune (\(g_{\text{Lune}} = 1{,}62\ \text{N}\cdot\text{kg}^{-1}\)).
g_lune et calcule P_lune.m_kg = m_g / 1000, puis g_lune = 1.62 et P_lune = m_kg * g_lune.g = 9.81
m_g = 250
m_kg = m_g / 1000 # 250 g = 0,250 kg
P = m_kg * g
g_lune = 1.62
P_lune = m_kg * g_lune
print("Masse :", m_kg, "kg")
print("Poids prévu sur Terre :", round(P, 2), "N")
print("Poids sur la Lune :", round(P_lune, 2), "N")
Résultats attendus. Avant correction : une masse de 250 000 kg et un poids de 2 452 500 N, absurdes pour un petit objet. Après correction : 0,25 kg, 2,45 N sur Terre, 0,41 N sur la Lune.
Interprétation. 2,45 N est cohérent avec la mesure au dynamomètre (2,44 N). Sur la Lune, la même masse « pèserait » 6 fois moins.
Erreurs fréquentes. Multiplier par 1 000 au lieu de diviser ; garder les grammes dans \(P = m\,g\) (le résultat serait 1 000 fois trop grand).
Pour chaque mesure, il calcule le rapport \(\dfrac{P}{m}\). Si le poids est proportionnel à la masse, ce rapport est constant : c'est \(g\). Le programme calcule ensuite la moyenne de ces rapports et l'écart relatif avec la valeur de référence \(9{,}81\ \text{N}\cdot\text{kg}^{-1}\). Comment lire le résultat ? Un écart relatif de quelques pour cent est normal pour des mesures au dynamomètre.
À faire : complète les lignes marquées ..., exécute, puis réponds à Q2.
i est m_g[i] (en grammes) ; le poids correspondant est P[i].m_kg = m_g[i] / 1000 et r = P[i] / m_kg.m_g = [50, 100, 150, 200, 250, 300]
P = [0.48, 0.99, 1.46, 1.97, 2.44, 2.95]
rapports = []
for i in range(len(m_g)):
m_kg = m_g[i] / 1000
r = P[i] / m_kg
rapports.append(r)
print("m =", m_kg, "kg P =", P[i], "N P/m =", round(r, 2), "N/kg")
g_exp = sum(rapports) / len(rapports)
ecart = abs(g_exp - 9.81) / 9.81 * 100
print("g expérimental :", round(g_exp, 2), "N/kg")
print("écart relatif :", round(ecart, 1), "%")
Résultats attendus. Rapports : 9,6 ; 9,9 ; 9,73 ; 9,85 ; 9,76 ; 9,83 N/kg. Moyenne : 9,78 N/kg. Écart relatif : 0,3 %.
Interprétation. Le rapport \(P/m\) est à peu près constant : le poids est proportionnel à la masse, et le coefficient de proportionnalité est \(g\). L'écart de 0,3 % est faible : la mesure est en accord avec la valeur de référence. Le premier rapport (9,6) est le plus éloigné : pour une petite masse, une erreur de lecture de 0,01 N pèse davantage en proportion.
Erreurs fréquentes. Diviser par la masse en grammes (rapports 1 000 fois trop petits) ; faire la moyenne des poids au lieu de la moyenne des rapports.
Oui : \(P/m\) reste proche de 9,8 N/kg pour toutes les masses, donc \(P\) est proportionnel à \(m\). \(g_{\text{exp}} = 9{,}78\ \text{N}\cdot\text{kg}^{-1}\), soit un écart de 0,3 % : accord satisfaisant. Pour 50 g, le poids n'est que de 0,48 N : une erreur de lecture de 0,01 N représente 2 % de la mesure, contre 0,3 % pour 300 g. Les petites mesures sont relativement moins précises.
Il place les points de mesure \((m\ ;\ P)\) et trace la droite du modèle \(P = 9{,}81 \times m\). Pourquoi ? Un graphique montre d'un coup si les mesures suivent le modèle. Comment le lire ? Une situation de proportionnalité donne des points alignés sur une droite passant par l'origine.
À faire : le programme calcule déjà la liste m_kg. Complète la liste P_modele, ajoute la courbe du modèle, la légende, les titres et les unités.
m_kg[i]. Pour tracer une ligne sans points, utilise '-' au lieu de 'o'.P_modele.append(9.81 * m_kg[i]) ; puis plt.plot(m_kg, P_modele, '-', color='navy', label='modèle P = 9,81 m'), plt.legend(), plt.xlabel("m (kg)"), plt.ylabel("P (N)").import matplotlib.pyplot as plt
m_g = [0, 50, 100, 150, 200, 250, 300]
P = [0, 0.48, 0.99, 1.46, 1.97, 2.44, 2.95]
m_kg = []
P_modele = []
for i in range(len(m_g)):
m_kg.append(m_g[i] / 1000)
P_modele.append(9.81 * m_kg[i])
plt.plot(m_kg, P, 'o', color='red', label='mesures')
plt.plot(m_kg, P_modele, '-', color='navy', label='modèle P = 9,81 m')
plt.title("Poids en fonction de la masse")
plt.xlabel("m (kg)")
plt.ylabel("P (N)")
plt.legend()
plt.grid()
plt.show()
Résultat attendu. Les points rouges sont presque exactement sur la droite bleue, qui passe par l'origine et atteint 2,94 N pour 0,300 kg.
Interprétation. Les mesures sont alignées sur une droite passant par l'origine : le poids est proportionnel à la masse. Le modèle \(P = m\,g\) décrit bien l'expérience. Le point (0 ; 0) a été ajouté car une masse nulle a un poids nul.
Erreurs fréquentes. Tracer le modèle avec 'o' (des points au lieu d'une droite) ; oublier plt.legend() (les étiquettes label ne s'affichent pas).
Partie A. Avec la loi de gravitation, il calcule \(g = G\,\dfrac{M}{R^{2}}\) pour plusieurs astres. Partie B. Il calcule \(g\) à une altitude \(h\) au-dessus de la Terre, avec \(g(h) = G\,\dfrac{m_T}{(R_T + h)^{2}}\), pour \(h\) allant de 0 à 36 000 km, et trace la courbe. Pourquoi ? Pour savoir si les satellites échappent à la gravité de la Terre. Comment lire le résultat ? Une courbe qui décroît : plus on s'éloigne, plus \(g\) est faible.
Valeurs de référence Masses et rayons équatoriaux des astres d'après la NASA (arrondis à 3 chiffres significatifs).
À faire : complète les deux lignes marquées .... Puis réponds à Q3 en lisant les valeurs affichées pour l'ISS (400 km) et pour un satellite géostationnaire (35 800 km).
i : M[i] et R[i]. Dans la boucle de la partie B, h est en kilomètres : en mètres, c'est h * 1000.g = G * M[i] / R[i]**2 et d = RT + h * 1000.import matplotlib.pyplot as plt
G = 6.67e-11
astres = ["Mercure", "Vénus", "Terre", "Mars", "Jupiter", "Lune"]
M = [3.30e23, 4.87e24, 5.97e24, 6.42e23, 1.90e27, 7.35e22]
R = [2.44e6, 6.05e6, 6.37e6, 3.39e6, 7.15e7, 1.74e6]
for i in range(len(astres)):
g = G * M[i] / R[i]**2
print(astres[i], ": g =", round(g, 2), "N/kg")
mT = 5.97e24
RT = 6.37e6
h_km = []
g_h = []
for h in range(0, 36001, 100):
d = RT + h * 1000 # altitude convertie en mètres
h_km.append(h)
g_h.append(G * mT / d**2)
if h == 0 or h == 400 or h == 35800:
print("altitude", h, "km : g =", round(G * mT / d**2, 2), "N/kg")
plt.plot(h_km, g_h, '-', color='navy')
plt.title("Intensité de la pesanteur terrestre en fonction de l'altitude")
plt.xlabel("altitude h (km)")
plt.ylabel("g (N/kg)")
plt.grid()
plt.show()
Résultats attendus. Mercure 3,7 ; Vénus 8,87 ; Terre 9,81 ; Mars 3,73 ; Jupiter 24,79 ; Lune 1,62 N/kg. En altitude : 9,81 N/kg au sol ; 8,69 N/kg à 400 km ; 0,22 N/kg à 35 800 km.
Interprétation. Jupiter, très massive, a le \(g\) le plus fort malgré son grand rayon. Autour de la Terre, \(g\) diminue avec l'altitude mais ne s'annule jamais : à 400 km (ISS), il vaut encore 89 % de sa valeur au sol ; à l'altitude des satellites géostationnaires, il n'en reste que 2 %. Les satellites restent soumis à l'attraction terrestre : c'est elle qui les maintient en orbite.
Erreurs fréquentes. Écrire d = h (oublier le rayon de la Terre) ou d = RT + h (oublier la conversion km → m : \(h\) serait négligeable et \(g\) ne varierait presque pas).
Le programme affiche \(g \approx 8{,}69\ \text{N}\cdot\text{kg}^{-1}\) à 400 km, soit 89 % de la valeur au sol. L'affirmation est fausse : la gravité terrestre diminue avec la distance mais ne disparaît jamais. Les astronautes flottent parce que la station et eux tombent ensemble autour de la Terre (exercice 7).
Nina veut calculer \(g\) à l'altitude de l'ISS. Son programme contient quatre erreurs : deux l'empêchent de fonctionner, deux donnent un résultat faux sans message. Corrige une erreur à la fois, et utilise un ordre de grandeur pour repérer les erreurs silencieuses.
RT et de h, et le signe de l'exposant de G.print ; écrire d**2 ; G = 6.67e-11 ; distances en mètres : RT = 6.37e6 et h = 400e3.G = 6.67e-11 # erreur 3 : exposant négatif
mT = 5.97e24
RT = 6.37e6 # erreur 4 : distances en mètres
h = 400e3
d = RT + h
g = G * mT / d**2 # erreur 2 : la puissance s'écrit **
print("g à l'altitude de l'ISS :", round(g, 2), "N/kg") # erreur 1 : parenthèse fermée
Erreur 1 (bloquante). La parenthèse du print n'est pas fermée : erreur d'écriture.
Erreur 2 (bloquante). ^ n'est pas la puissance en Python (c'est une opération sur les nombres entiers écrits en binaire) : Python refuse de l'appliquer à un nombre décimal. Le carré s'écrit d**2.
Erreur 3 (silencieuse). 6.67e11 vaut \(6{,}67\times10^{11}\), et non \(6{,}67\times10^{-11}\) : le résultat est \(10^{22}\) fois trop grand.
Erreur 4 (silencieuse). Avec des distances en km, \(d^2\) est \(10^{6}\) fois trop petit, donc \(g\) est \(10^{6}\) fois trop grand.
Résultat après correction. \(g = 8{,}69\ \text{N}\cdot\text{kg}^{-1}\). Avec seulement les erreurs 1 et 2 corrigées, le programme affichait environ \(8{,}7\times10^{28}\ \text{N}\cdot\text{kg}^{-1}\) : une valeur absurde, repérable immédiatement par comparaison avec 9,81.
À 400 km, on est un peu plus loin du centre de la Terre qu'au sol : \(g\) doit être un peu inférieur à 9,81 N/kg, donc de l'ordre de 9. Un résultat comme \(10^{28}\) ou \(10^{6}\) est impossible : il signale une erreur d'unité ou de puissance de dix. Toujours confronter un résultat à un ordre de grandeur attendu.
Les mesures au dynamomètre montrent que le poids est proportionnel à la masse : \(P = m\,g\), avec \(g_{\text{exp}} = 9{,}78\ \text{N}\cdot\text{kg}^{-1}\), en accord avec \(9{,}81\ \text{N}\cdot\text{kg}^{-1}\) (écart de 0,3 %). Le coefficient \(g\) dépend de l'astre, car le poids est la force de gravitation qu'il exerce : \(g = G\,M/R^{2}\) (1,62 N/kg sur la Lune, 24,8 N/kg sur Jupiter). Loin de la surface, \(g\) diminue comme l'inverse du carré de la distance au centre, sans jamais s'annuler : 8,69 N/kg à l'altitude de l'ISS. La masse, elle, reste partout la même.
Grille d'auto-évaluation
A = je sais faire seul · B = avec un peu d'aide · C = partiellement · D = à retravailler.
| Compétence | A | B | C | D |
|---|---|---|---|---|
| Mesurer un poids avec un dynamomètre en limitant les erreurs | ||||
| Convertir des grammes en kilogrammes et calculer P = m·g | ||||
| Déterminer g à partir de mesures et calculer un écart relatif | ||||
| Comparer des mesures et un modèle sur un graphique | ||||
| Utiliser la loi de gravitation pour calculer g | ||||
| Détecter une erreur d'unité grâce à un ordre de grandeur |
Fiche professeur
Organisation
Durée totale estimée : 105 min. En séance de 1 h 30 : partie expérimentale et activités 1 à 3 ; activités 4 et 5 et conclusion en fin de séance, à la maison ou en séance suivante. Le parcours « à l'aise » (activité 1 facultative) fait gagner environ 10 min.
Préparation
Vérifier le zéro des dynamomètres ; prévoir des masses marquées de 50, 100 et 200 g par binôme et une balance commune.
Sécurité
Ne pas dépasser le calibre du dynamomètre (5 N, soit environ 500 g).
Points de vigilance
Faire lire le dynamomètre à hauteur des yeux. Distinguer systématiquement masse (kg, balance) et poids (N, dynamomètre) dans les réponses écrites.
Différenciation
Aide : Donner le tableau de mesures pré-rempli pour les masses ; rappeler g = 9,8 N/kg.
Approfondissement : Utiliser l'activité de gravitation pour calculer son propre poids sur la Lune et sur Mars.
Évaluation (sur 20)
Exploitation de la proportionnalité P = m × g (activités 2 et 3, 8 pts) ; activité 4 (gravitation, 4 pts) ; activité 5 (4 pts) ; Q5 (4 pts).
Les corrections détaillées des activités Python et des questions sont dans les encadrés de chaque partie.
Pour consolider : exercices 6, 7 et 10, puis le quiz du cours.
Exercices corrigés Retour au cours