import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

# longueurs d'ondes lampe Hg et laser HeNe
lambda_hg = np.array([405,436,546,578,633])
# position des raies spectrales sur le réticule

####  A COMPLETER: remplacer les ... par vos mesures 
posi_hg = np.array([ ... , ... , ... , ... , ... ])

# modélisation par un polynome
def polynome_deg_deux(x, a, b, c):    
    return a * x**2 + b * x + c

# calculs des paramètres du modèle décrivants au mieux l'expérience
[a,b,c] , pcov = curve_fit(polynome_deg_deux, posi_hg, lambda_hg)

# affichage des coefficients du polynome
print("a=",a," b=",b," c=",c) 

# calcule de la courbe modélisée
x_modele = np.linspace(np.min(posi_hg), np.max(posi_hg) , 50)
y_modele = polynome_deg_deux(x_modele, *[a,b,c])

# affichage des différents graphiques
plt.plot(posi_hg, lambda_hg,  'b+', label='expérience')
plt.plot(x_modele, y_modele, 'r--', label= 'modèle: a=%5.3f, b=%5.3f, c=%5.3f' %tuple([a,b,c]))

#### A COMPLETER: placez les bonnes unités sur les axes
plt.xlabel('position sur le réticule/ ...')
plt.ylabel('lambda / ...')

plt.legend()
plt.show()

# utilisation du modèle pour calculer la longueur d'onde de la 
# raie jaune du sodium