TP : Diagramme Hertzsprung–Russell (HR)

Objectifs pédagogiques


Tableau de données

Étoile Température (K) Luminosité (L☉)
Soleil58001
Sirius A990025
Betelgeuse3500120000
Rigel12000120000
Proxima Centauri30000.001
Vega960040
Altair770011
Deneb8500200000
Spica2200020000
Antares3600100000
Arcturus4300170
Capella490078
Pollux480043
Fomalhaut860016
Aldebaran3900500
Castor A1020052
Bellatrix220009000
Canopus740010000
Achernar150003150
Barnard’s Star31000.0004

Programme Python (à compléter)


import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

# Noms des étoiles (déjà fournis)
noms = [
    "Soleil", "Sirius A", "Betelgeuse", "Rigel", "Proxima Centauri",
    "Vega", "Altair", "Deneb", "Spica", "Antares",
    "Arcturus", "Capella", "Pollux", "Fomalhaut", "Aldebaran",
    "Castor A", "Bellatrix", "Canopus", "Achernar", "Barnard’s Star"
]

# À compléter par les élèves (copier les valeurs du tableau)
temperatures = [5800, 9900, 3500, 12000, 3000,
                9600, 7700, 8500, 22000, 3600,
                4300, 4900, 4800, 8600, 3900,
                10200, 22000, 7400, 15000, 3100]

luminosites = [1, 25, 120000, 120000, 0.001,
               40, 11, 200000, 20000, 100000,
               170, 78, 43, 16, 500,
               52, 9000, 10000, 3150, 0.0004]

# Classes spectrales (déjà préparées)
classes = ["G","A","M","B","M",
           "A","A","A","B","M",
           "K","G","K","A","K",
           "A","B","F","B","M"]

# Couleurs associées
couleurs = {
    "O": "blue",
    "B": "deepskyblue",
    "A": "cyan",
    "F": "green",
    "G": "yellow",
    "K": "orange",
    "M": "red"
}

plt.figure(figsize=(8,6))

# Tracé des points avec couleurs
for i in range(len(noms)):
    plt.scatter(temperatures[i], luminosites[i],
                color=couleurs[classes[i]])
    plt.text(temperatures[i], luminosites[i], noms[i], fontsize=8)

# Échelles et conventions HR
plt.xscale("log")
plt.gca().invert_xaxis()
plt.yscale("log")

plt.xlabel("Température (K)")
plt.ylabel("Luminosité (L☉)")
plt.title("Diagramme HR (échelle log-log)")

# Légende des classes spectrales
patches = [mpatches.Patch(color=couleurs[c], label=c) for c in couleurs]
plt.legend(handles=patches, title="Classe spectrale")

plt.show()
  

Essayer le programme sur Capytale

Cliquez sur ce lien pour ouvrir le programme directement dans Capytale : Lancer le programme sur Capytale

Consignes pour les élèves

  1. Vérifiez que les listes temperatures et luminosites correspondent bien au tableau fourni.
  2. Exécutez le programme pour obtenir le diagramme HR.
    Editer le diagramme au format PNG puis faites une capture avec l'outil capture dans votre TP édité sur un fichier OpenOffice texte
  3. Observez la répartition des étoiles et identifiez la séquence principale, les géantes rouges et les supergéantes.
  4. Modifiez une ligne du programme :
    • Supprimez plt.xscale("log") et observez l’effet.
    • Supprimez plt.gca().invert_xaxis() et observez l’effet.
  5. Expliquez pourquoi les étoiles chaudes apparaissent bleues et les froides rouges.

Fin du TP