import numpy as np
import matplotlib.pyplot as plt # pour le tracé


# Constantes et résultats expérimentaux

R = ..... # constante des gaz parfaits
T = np.array([..... , ..... , ..... , .....]) # température, en K
Deltat = np.array([..... , ..... , ..... , .....]) # durée Delta t, en s
invT=1/T # inverse de T
invRT=invT/R*1000 # ATTENTION à la multiplication par 1000
lnDeltat = np.log(Deltat)


# Représentation du nuage de points avec la bibliothèque matplotlib

plt.title("Recherche de l'énergie d'activation $E_\mathrm{a}$") # titre du graphique
plt.plot(invRT,lnDeltat,"x",label="valeurs expérimentales") # tracé de la courbe, avec chaque point expérimental représenté par une croix
plt.xlabel("$\dfrac{1}{RT}$ (.....)") # grandeur et unité sur l'axe des abscisses
plt.ylabel("$\ln (\Delta t)$ (.....)") # grandeur et unité sur l'axe des ordonnées


# Si le nuage de points semble bien pouvoir être modélisé par un relation affine, du type a x + b (ici lnDeltat_mod = Ea * invRT + b), alors la fonction polyfit de la bilibothèque numpy permet de faire une régression linéaire (tout comme Excel peut donner une courbe de tendance)

Ea,b = np.polyfit(invRT, lnDeltat, 1) # paramètres à prendre en compte dans la régression linéaire (polynôme de degré 1)
lnDeltat_mod = [Ea*i+b for i in invRT] # modèle
plt.plot(invRT,lnDeltat_mod,"--",label="valeurs modélisées") # tracé de la courbe associée au modèle
plt.legend() #affichage de la légende
plt.grid() # affichage d'une grille
plt.show() # affichage du graphique
print(Ea,b) # Python retourne les valeurs de Ea et b



