##Isomérisation de la menthone

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import bisect

##Données
kd= 12.3e-3  #min-1
ki=23.0e-3   #min-1
PRSm=-29.6   #° /dm.mL/g
PRSp=91.7
alpha0=-10.3  #°
M=154   #g/mol

##Avancement volumique en fonction du temps
C0=alpha0/PRSm /M    # unité = mol/mL
k=kd+ki
#Résolution analyique
def Xana(t):
    return kd*C0*(1-np.exp(-k*t))/k

## Pouvoir rotatoire en fonction du temps
T=np.linspace ( 0, 100 )
X1= Xana(T)
ALPHA = alpha0+ X1*M*(PRSp-PRSm)                #tableau des valeurs de alpha


plt.figure(0)
plt.plot(T,ALPHA,'+b')
plt.grid()
plt.legend()
plt.xlabel("t(min)")
plt.ylabel(r"$\alpha$")
plt.show()


## résolution avec la fonction odeint
from scipy.integrate import odeint

def F(X,t):
    return (kd*C0-k*X)

#Comparaison des deux méthodes de résolution
X2 = odeint ( F, [0],T)

plt.figure(1)
plt.plot(T,X1,'+b',label="resolution analytique")
plt.plot(T,X2,'xr',label="résolution numérique")
plt.grid()
plt.legend()
plt.xlabel("t(min)")
plt.ylabel("x")
plt.show()
