Populations des amas globulaires M3 et M13

Quelques éléments de comparaison.

Intentions et sources

Montrer les ressemblances et différences entre les deux populations stellaires en utilisant deux types de représentations graphiques :

  • Les "boîtes à moustaches" qui sont des représentations utilisées par les statisticiens.
  • Les diagrammes HR, qui sont des représentations utilisées par les astrophysiciens.

Données utilisées et outil informatique

  • Le catalogue J/AJ/122/3219 de la base de données en ligne Vizier, parce qu'il donne accès directement aux données des deux amas globulaires.
  • Le langage Python 3 et certaines bibliothèques (listées au début du code).

Boites à moustaches

Déclaration des bibliothèques, chargement des données

Remarques:

  • Vizier.ROW_LIMIT = -1 permet de lire la totalité des lignes du catalogue (sinon il n'en charge que 50 lignes).
  • from astroquery.vizier import Vizier permet de charger directement depuis la base de données.
In [1]:
import matplotlib.pyplot as plt
import csv
import numpy as np
from astroquery.vizier import Vizier
import pylab
# Lectures des indices B-V de M3 et M13
Vizier.ROW_LIMIT = -1
catalog1 = Vizier.get_catalogs('J/AJ/122/3219')

indice1 = catalog1[0]['B-V'] # indices de couleur de M3
indice2 = catalog1[1]['B-V'] # indices de couleur de M13
WARNING: WrongDBMModuleWarning: Existing astropy cache is in an unsupported format, either install the appropriate package or use astropy.utils.data.clear_download_cache() to delete the whole cache; db type is dbm.gnu, but the module is not available [astropy.utils.data]

Fonction de conversion indice B-V vers températures

Le codage d'une fonction est justifié : on aura au moins deux séries de valeurs à convertir.

In [2]:
def B_V_temp(indice):
    """ Convertit un indice B-V en température Kelvin """
    temp = np.array([])
    temp = 4600 * (  (1 / (0.92 * indice  + 1.7 ) )   +  ( 1 /  (0.92 * indice + 0.62) ))
    return temp

Appel de la conversion

On effectue successivement la conversion pour M3 puis pour M13.

In [3]:
indicetempM3 = B_V_temp(indice1)
indicetempM13 = B_V_temp(indice2)

Réalisation du graphique

Python, complété par matplotlib et pylab fournit le nécessaire.

In [4]:
fig = plt.figure(1, figsize=(7,12)) # dimensions du cadre
BoxName = ['M3', 'M13']
data = [indicetempM3, indicetempM13]
plt.boxplot(data)
pylab.xticks([1,2,3], BoxName)
axes = plt.gca()
axes.set_xlabel("Populations stellaires")
axes.set_ylabel("Température de surface")
Out[4]:
Text(0, 0.5, 'Température de surface')

Commentaires

  • Si l'on s'en tient à l'aspect des deux représentations, les amas globulaires M3 et M13 sont très semblables.
  • Pourtant ils diffèrent par ce qui est en dehors des boîtes : dans M13, les petits cercles qui représentent les étoiles hors-moyenne paraissent plus nombreux.
  • Un outil statistique, numérique et non graphique devra éclaircir ces différences.

Diagrammes HR

Partant de la même base de données, l'on va tracer deux diagrammes HR dans un même cadre.

Pour cela, on commence comme plus haut...

In [5]:
import matplotlib.pyplot as plt
import csv
import numpy as np
from astroquery.vizier import Vizier
import pylab
# import scipy.optimize

# Lectures des indices B-V de M3 et M13
Vizier.ROW_LIMIT = -1
catalog1 = Vizier.get_catalogs('J/AJ/122/3219')
print(catalog1)
# [0] = M3
# [1] = M13
indice1 = catalog1[0]['B-V']
vmag1 = catalog1[0]['Vmag']
indice2 = catalog1[1]['B-V']
vmag2 = catalog1[1]['Vmag']
TableList with 2 tables:
	'0:J/AJ/122/3219/table1' with 7 column(s) and 2356 row(s) 
	'1:J/AJ/122/3219/table2' with 9 column(s) and 2152 row(s) 

... sauf que l'on ne convertit pas les indices de couleur en températures.

Tracé des diagrammes

Le code Python utilisé ici est très ressemblant à celui présenté dans divers articles précédents.

In [6]:
fig = plt.figure(1, figsize=(8,12)) # dimensions du cadre
plt.plot(indice1, vmag1, linestyle='none', marker = '+', c = 'black', markersize = 4, label="M3")
plt.plot(indice2, vmag2, linestyle='none', marker = 'x', c = 'red', markersize = 4, label="M13")
axes = plt.gca()
axes.set_xlabel("Couleur : B-V")
axes.set_ylabel("Magnitudes")
axes.invert_yaxis()
plt.legend(loc='right')
Out[6]:
<matplotlib.legend.Legend at 0x7fc476c2a090>

Commentaires

Quand j'ai vu apparaître ce double diagramme, j'ai ressenti du plaisir : il était "bavard" (mettait en évidence plusieurs faits).

  • La partie centrale (les deux "virgules" rouge et noire) sont décalées de haut vers le bas, l'une par rapport à l'autre. On peut supposer que l'un des amas étant plus loin de nous, les magnitudes apparentes sont un peu décalées (les étoiles du plus proche semblent un peu plus lumineuses).
  • Surtout : dans la partie gauche du diagramme, entre les magnitudes19 et 15, M13 met en évidence une "barre oblique rouge" qui n'a pas d'équivalent chez M3.
  • Surtout : entre cette barre et la "virgule", au niveau de la magnitude 15-16, remarquer les + qui représente la "branche horizontale" du diagramme de M3 qui existe à peine dans M13.

L'article de Wikipedia consacré à la HB contient ceci :

Il s'agit typiquement d'étoiles de population II, donc âgées et de faible métallicité. Les étoiles de population I, plus jeunes, plus massives et à métallicité plus élevée, n'empruntent pas la branche horizontale après le flash de l'hélium mais tendent plutôt à se regrouper dans le red clump, qui est en quelque sorte le pendant à métallicité élevée de la branche horizontale.

"Population âgée" : terme souvent associé aux amas globulaires.

Ces quelques lignes, rapides et (trop) superficielles devront être complétées.