from numpy import *
from scipy import integrate
k1, c0, eps =1., 1., -1./3.
def dX_dt(X, t):
return 3*k1*(c0**0.5)*((1-X)**1.5)/((1-eps*X)**0.5)
t = linspace(0, 5, 100) # time
X0 = 0. # conditions initiales
X, infodict = integrate.odeint(dX_dt, X0, t, full_output=True)
infodict['message']
'Integration successful.'
import matplotlib.pyplot as plt
plt.plot (t, X )
plt.xlabel ('temps')
plt.ylabel ('oxygen conversion')
plt.show()
cible=0.98
def dt_dX(X):
return 1./(3*k1*(c0**0.5)*((1-X)**1.5)/((1-eps*X)**0.5))
tb=integrate.quad(dt_dX, 0, cible)[0]
plt.plot (t, X )
plt.xlim((3,5))
plt.ylim((0.96,0.99))
plt.xlabel ('temps')
plt.ylabel ('oxygen conversion')
plt.annotate(cible, xy=(tb, cible), xytext=(tb-0.5, cible),arrowprops=dict(facecolor='red'),)
plt.annotate(tb, xy=(tb, cible), xytext=(tb, cible-0.01),arrowprops=dict(facecolor='red'),)
plt.show()