On cherche à écrire une fonction Python qui renvoie l'intégrale d'une fonction en l'approchant par la méthode des rectangles.
Que représente l'intégrale d'une fonction entre deux réels a, b ?
Le calcul d'intégrales permet de calculer l'aire sous la courbe d'une fonction. Si la courbe est au-dessus de l'axe des abscisses, elle est positive, sinon elle est négative.
Ainsi, l'intégrale d'une fonction entre deux réels a et b représente l'aire algébrique entre la courbe et l'axe des abscisses.
On peut approcher l'aire sous la courbe par une succession de rectangles dont on somme les aires.

On choisit de prendre n=10 rectangles sous la courbe x \mapsto x^2 sur l'intervalle [0;1] .
Quelle est la largueur de chaque rectangle ?
Pour découper un intervalle de taille b-a = 1 en n = 10 subdivisions, on doit choisir des rectangles de largeur \dfrac{b-a}{n} = \dfrac{1}{10} .
Ainsi, les rectangles ont une largeur de L = 0{,}1 .
Quelle est la hauteur h_k du k+1 -ème rectangle pour une fonction sur [a;b] découpée en n rectangles ?
Les rectangles sont de largeur \dfrac{b-a}{n} .
Le point inférieur gauche du k +1-ème rectangle a donc pour coordonnée sur l'axe des abscisses a + k \times \dfrac{b-a}{n} . En effet, pour k = 0 , on est situé sur x = a et on ajoute une largeur de rectangle chaque fois.
Ainsi, la hauteur du rectangle est h_k = f\left(a + k \times \dfrac{b-a}{n} \right) .
Quel programme Python renvoie l'aire sous la courbe représentative de la fonction x \mapsto x^2 sur l'intervalle [0;1] en l'approchant par n = 20 rectangles ?
On utilise une boucle Python pour additionner les aires de chaque rectangle. Le premier est d'aire \dfrac{b-a}{n} \times f\left(a \right) , le second \dfrac{b-a}{n} \times f\left( a + \times \dfrac{b-a}{n} \right) , le troisième \dfrac{b-a}{n} \times f\left( a + 2 \times \dfrac{b-a}{n} \right) et ainsi de suite.
Ainsi, le code Python pour calculer l'aire sous la courbe de la fonction x \mapsto x^2 sur [0;1] est :
\verb/ f = lambda x: x**2 /
\verb/ a = 1 /
\verb/ b = 2 /
\verb/ n = 20 /
\verb/ integrale = 0 /
\verb/ for k in range(0, n): /
\verb# largeur = (b-a)/n #
\verb# hauteur = f(a + k*(b-a)/n) #
\verb/ aire = largeur * hauteur /
\verb/ integrale += aire /
\verb/ print(integrale) /