Pour calculer une intégrale simple avec python il existe le module "quad" de la librairie scipy. Voici un exemple basique d'utilisation: l'intégration de la fonction $f: x\rightarrow cos(x)$ entre $0$ et $\frac{9\pi}{2}$.
from scipy.integrate import quadimport numpy as npxmin = 0.0xmax = 9.0 * ( np.pi / 2.0 )def function(x):return np.cos(x)res, err = quad(function, xmin, xmax)print 'norm: ', res
Pour illustrer l'aire d'intégration avec matplotib, on peut utiliser la méthode ax.fill_between(x, 0, function(x)) comme dans cet exemple:

from scipy.integrate import quadfrom pylab import *import numpy as npxmin = 0.0xmax = 9.0 * ( np.pi / 2.0 )def function(x):return np.cos(x)res, err = quad(function, xmin, xmax)print 'norm: ', rest = arange(xmin, xmax, 0.01)ax = subplot(111)ax.plot(t, function(t),'r-')ax.grid(True)ax.set_xlim(xmin,xmax)ax.set_ylim(-1.25,1.25)ax.fill_between(t, 0, function(t))plt.savefig('IntegraleSimplePython.png')show()
Avec quad il est possible d'intégrer une fonction qui prend plusieurs arguments, exemple avec une fonction f qui prend deux arguments arg1 et arg2:
quad( f, x_min, x_max, args=(arg1,arg2,))
Exemple de code:

from scipy.integrate import quadimport matplotlib.pyplot as pltimport scipy.statsimport numpy as npdef normal_distribution_function(x,mean,std):value = scipy.stats.norm.pdf(x,mean,std)return valuex_min = 0.0x_max = 30.0mean = 15.0std = 4.0ptx = np.linspace(x_min, x_max, 100)pty = scipy.stats.norm.pdf(ptx,mean,std)plt.plot(ptx,pty, color='gray')plt.fill_between(ptx, pty, color='#e1b1b4', alpha='1.0')plt.grid()plt.title('How to integrate a function that takes parameteres in python ?', fontsize=10)plt.xlabel('x', fontsize=8)plt.ylabel('Probability Density Function', fontsize=8)res, err = quad(normal_distribution_function, x_min, x_max, args=(mean,std,))print(res)plt.savefig("integrate_function_takes_parameters.png")plt.show()
Références
| Links | Site |
|---|---|
| How to evaluate single integrals of multivariate functions with Python's scipy.integrate.quad? | stackoverflow |
| quad | doc scipy |
