Primitives et intégrales Méthode

Approcher une intégrale par la méthode des rectangles

Durée estimée
15 minutes
Votre progression

Créez un compte gratuit pour suivre votre avancement et reprendre où vous avez laissé.

Créer un compte

Remarque

Quand on ne sait pas (ou ne veut pas) calculer une primitive, on peut approcher la valeur de $ \displaystyle\int_{a}^{b} f(x)\,dx $ en remplaçant l'aire sous la courbe par une somme d'aires de rectangles. Plus on découpe finement l'intervalle, plus l'approximation est précise.

Méthode

Pour approcher $ \displaystyle\int_{a}^{b} f(x)\,dx $ par la méthode des rectangles avec $ n $ sous-intervalles :

  1. Étape 1 : choisir le nombre $ n $ de rectangles et calculer leur largeur commune $ h = \dfrac{b-a}{n} $.
  2. Étape 2 : repérer les bornes des sous-intervalles : $ x_k = a + k\,h $ pour $ k $ allant de $ 0 $ à $ n $.
  3. Étape 3 : pour la somme à gauche $ S_g $, prendre la hauteur de chaque rectangle égale à la valeur de $ f $ au bord gauche : $ S_g = h\,\big(f(x_0) + f(x_1) + \dots + f(x_{n-1})\big) $.
  4. Étape 4 : pour la somme à droite $ S_d $, prendre la hauteur au bord droit : $ S_d = h\,\big(f(x_1) + f(x_2) + \dots + f(x_n)\big) $.
  5. Étape 5 : si $ f $ est monotone sur $ [a;b] $, encadrer l'intégrale par les deux sommes (voir la remarque ci-dessous), puis donner comme valeur approchée la moyenne $ \dfrac{S_g + S_d}{2} $.

Remarque

Lorsque $ f $ est croissante sur $ [a;b] $, la somme à gauche sous-estime l'aire et la somme à droite la surestime, d'où l'encadrement :

$ S_g \leqslant \displaystyle\int_{a}^{b} f(x)\,dx \leqslant S_d $

Si $ f $ est décroissante, les rôles s'inversent : $ S_d \leqslant \displaystyle\int_{a}^{b} f(x)\,dx \leqslant S_g $. L'amplitude de l'encadrement vaut $ |S_d - S_g| = h\,|f(b) - f(a)| $ : elle tend vers $ 0 $ quand $ n $ tend vers l'infini.

Encadrer l'intégrale de la fonction carré de 0 à 1

Approcher $ \displaystyle\int_{0}^{1} x^{2}\,dx $ avec $ n = 4 $ rectangles, puis comparer à la valeur exacte $ \dfrac{1}{3} $.

Étape 1 : la largeur des rectangles est $ h = \dfrac{1-0}{4} = 0{,}25 $.

Étape 2 : les bornes sont $ x_0 = 0 $, $ x_1 = 0{,}25 $, $ x_2 = 0{,}5 $, $ x_3 = 0{,}75 $, $ x_4 = 1 $. Avec $ f(x) = x^{2} $, on calcule :

$ f(0) = 0 \quad ; \quad f(0{,}25) = 0{,}0625 \quad ; \quad f(0{,}5) = 0{,}25 \quad ; \quad f(0{,}75) = 0{,}5625 \quad ; \quad f(1) = 1 $

Étape 3 : somme à gauche (bords $ x_0,\,x_1,\,x_2,\,x_3 $) :

$ S_g = 0{,}25 \times (0 + 0{,}0625 + 0{,}25 + 0{,}5625) = 0{,}25 \times 0{,}875 = 0{,}21875 $

Étape 4 : somme à droite (bords $ x_1,\,x_2,\,x_3,\,x_4 $) :

$ S_d = 0{,}25 \times (0{,}0625 + 0{,}25 + 0{,}5625 + 1) = 0{,}25 \times 1{,}875 = 0{,}46875 $

Étape 5 : $ f $ est croissante sur $ [0;1] $, donc :

$ 0{,}21875 \leqslant \displaystyle\int_{0}^{1} x^{2}\,dx \leqslant 0{,}46875 $

La valeur exacte $ \dfrac{1}{3} \approx 0{,}3333 $ est bien dans cet encadrement. La moyenne des deux sommes donne l'estimation $ \dfrac{0{,}21875 + 0{,}46875}{2} = 0{,}34375 $, déjà proche de $ \dfrac{1}{3} $.

Quatre rectangles approchant l'aire sous la parabole y=x^2 sur [0;1]
Sommes à gauche : les rectangles restent sous la courbe croissante.

Algorithme Python (boucle) sur l'intégrale de l'exponentielle

On veut une valeur approchée de $ \displaystyle\int_{0}^{1} e^{x}\,dx $, dont la valeur exacte est $ e - 1 \approx 1{,}7183 $.

Étape 1 : on programme une boucle qui ajoute les aires des $ n $ rectangles. La fonction ci-dessous renvoie les deux sommes (à gauche et à droite).

from math import exp

def rectangles(f, a, b, n):
    h = (b - a) / n
    somme_gauche = 0
    somme_droite = 0
    for k in range(n):
        x_gauche = a + k * h
        x_droite = a + (k + 1) * h
        somme_gauche += f(x_gauche) * h
        somme_droite += f(x_droite) * h
    return somme_gauche, somme_droite

g, d = rectangles(exp, 0, 1, 100)
print(g, d)          # 1.7097... 1.7269...
print((g + d) / 2)   # 1.7183...

Étape 2 : avec $ n = 100 $, le programme renvoie $ S_g \approx 1{,}7097 $ et $ S_d \approx 1{,}7269 $.

Étape 3 : la fonction exponentielle étant croissante sur $ [0;1] $, on obtient l'encadrement :

$ 1{,}7097 \leqslant \displaystyle\int_{0}^{1} e^{x}\,dx \leqslant 1{,}7269 $

Étape 4 : la moyenne $ \dfrac{S_g + S_d}{2} \approx 1{,}7183 $ approche très bien la valeur exacte $ e - 1 \approx 1{,}7183 $. En augmentant $ n $, l'encadrement se resserre.

Remarque

La largeur de l'encadrement vaut ici $ h\,(f(b) - f(a)) = \dfrac{1}{n}\,(e^{1} - e^{0}) = \dfrac{e-1}{n} $ : elle est inversement proportionnelle à $ n $. Pour gagner un chiffre décimal de précision, il faut donc multiplier $ n $ par $ 10 $.

Attention

Erreurs fréquentes :

  • Confondre le nombre de rectangles ($ n $) et le nombre de bornes ($ n+1 $) : la somme à gauche utilise $ x_0,\dots,x_{n-1} $ et la somme à droite $ x_1,\dots,x_n $, jamais toutes les bornes à la fois.
  • Oublier de multiplier par la largeur $ h $ : une somme de valeurs $ f(x_k) $ n'est pas une aire tant qu'elle n'est pas multipliée par $ h $.
  • Conclure $ S_g \leqslant \displaystyle\int_{a}^{b} f \leqslant S_d $ sans avoir vérifié que $ f $ est croissante : si $ f $ est décroissante, l'encadrement est inversé.
  • En Python, écrire `range(n+1)` dans la boucle de la somme à gauche : on dépasse alors le dernier sous-intervalle (la boucle doit parcourir $ n $ rectangles, donc `range(n)`).