import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

"""
Hydrodésulfuration en réacteur ouvert parfaitement agité ; réaction d'ordre 1
"""
temps_passage = np.array([1.2,2.1,2.8,3.9,5.0,9.0]) #en heure
concentration_sortie = np.array([17.3,13.3,11.2,9.0,7.5,4.7]) #en mol/m3
concentration_entree = 30.0 #en mol/m3

Y = concentration_entree/concentration_sortie

slope, intercept, rvalue, pvalue, stderr = stats.linregress(temps_passage,Y)
print("pente = {}".format(slope))
print("ordonnée à l'origine = {}".format(intercept))
print("R2 = {}".format(rvalue**2))

def predict(x):
    return slope * x + intercept

fitLine = predict(temps_passage)

fig, axes = plt.subplots(2)
fig.suptitle("Décomposition du pentaoxyde d'azote")
axes[0].grid()
# axes[0].set(ylim=[0.0,0.015])
axes[0].set(ylabel="Concentration de sortie (mol/m3")
axes[1].set(ylabel="Rapport des concentrations")
axes[1].grid()
axes[1].set(xlabel="Temps de passage (h)")
axes[0].scatter(temps_passage,concentration_sortie,label="Points expérimentaux")
axes[1].scatter(temps_passage,Y,label="Points expérimentaux")
axes[1].plot(temps_passage,fitLine,color='r',label="Droite de régression linéaire\n y = {}x + {}".format(round(slope,4),round(intercept,4)))
axes[0].legend()
axes[1].legend()
plt.show()

