Méthode des trapèzes

L’intégration numérique est un chapitre incontournable du programme d’informatique en prépa ECG/ECT. Savoir traduire une définition mathématique en un algorithme Python efficace est généralement bien noté lors des questions de Python à l’écrit. Dans cette perspective, cet article détaille les cinq méthodes de base à maîtriser pour briller le jour J. Tu y trouveras une rapide présentation mathématique de la méthode, le code Python ainsi que son explication et ses principaux avantages et inconvénients ! Abordons donc la méthode des rectangles pour voir son approfondissement avec l’étude de la méthode des trapèzes. Nous poursuivrons alors avec la méthode de Simpson, puis celle de Monte-Carlo. Enfin, celle disponible directement avec la bibliothèque scipy.

La méthode des rectangles (à gauche)

Explication mathématique

On découpe l’intervalle \([a, b]\) en \(n\) subdivisions de largeur \(h = (b-a)/n\). On approche l’aire sous la courbe par une somme de rectangles dont la hauteur est fixée par la valeur de la fonction au bord gauche de chaque segment.

La formule du calcul de l’approximation étant la suivante : \(I \approx h \sum_{i=0}^{n-1} f(a + i \cdot h)\)

Voici un graphique rapide pour comprendre la logique graphique derrière cette méthode ultra classique du programme :

Méthode rectangles

Si tu souhaites développer plus longuement ton étude de cette méthode, voici un article Major Prépa sur le sujet.

Code Python

Explication du code et analyse

D’abord, avec \(h = (b – a) / n\), on calcule la largeur commune des rectangles. Ensuite, grâce à la ligne suivante, on initialise le cumul des images (naturellement à 0 pour le moment).

On ouvre ensuite une boucle qui va permettre de calculer l’aire de chaque rectangle. Avec « x\_i = a + i * h », on détermine les points d’échantillonnage respectifs et, pour chaque point, on calcule l’image de ce point par la fonction \(f\) et on somme ces images respectives.

Une fois cela fait, on retourne simplement l’aire des rectangles, qui se fait par le produit de la longueur et de la largeur. Par distributivité, l’aire de la somme des rectangles peut en effet se calculer comme leur largeur commune multipliée par la somme des aires respectives.

Avantages : cette méthode est simple à mettre en œuvre (une fois que l’on a compris les fondements mathématiques et la logique graphique de la méthode). Le script est d’ailleurs très court.

Inconvénients : qui dit méthode rapide dit généralement précision relative malheureusement. L’erreur d’approximation de l’intégrale est proportionnelle au pas \(h\) et donc au nombre de points \(n\) qu’il faut augmenter au possible.

La méthode des trapèzes

Explication mathématique

On approche la fonction par des segments de droite reliant \(f(x_i)\) et \(f(x_{i+1})\). L’aire élémentaire n’est plus un rectangle, mais un trapèze.

La formule pour approximer la valeur de l’intégrale est alors la suivante : \(I \approx \frac{h}{2} \sum_{i=0}^{n-1} (f(x_i) + f(x_{i+1}))\)

Voici un graphique rapide pour comprendre la logique graphique derrière cette méthode assez classique du programme :

Méthode des trapèzes

On obtient bien une méthode plus précise, car la partie supérieure « épouse » mieux la courbe de \(f\).

Code Python

Explication du code et analyse

Dans ce script, le raisonnement est presque exactement le même que pour la méthode des rectangles. Une différence doit cependant être notée : l’aire cumulée ne commence pas à 0. En effet, dans la formule de calcul de l’aire des trapèzes, on a :

  • Aire du trapèze 1 (entre \(x_0\) et \(x_1\)) : \(h \times \frac{f(x_0) + f(x_1)}{2}\)
  • Aire du trapèze 2 (entre \(x_1\) et \(x_2\)) : \(h \times \frac{f(x_1) + f(x_2)}{2}\)

 

Si on fait la somme totale :

  • \(Aire = \frac{h}{2} \times [f(x_0) + f(x_1) + f(x_1) + f(x_2)]\)
  • \(Aire = \frac{h}{2} \times [f(x_0) + 2f(x_1) + f(x_2)]\)

 

D’où une formule générale suivante :

\[Aire = h \times \left[ \frac{f(a) + f(b)}{2} + \sum_{i=1}^{n-1} f(x_i) \right]\]

C’est pour cela que la somme ne s’initialise pas à 0. Et aussi pour cette raison que la boucle débute à \(1\) et se termine à \(n-1\).

Avantages : cette méthode est bien plus précise que les rectangles (ordre 2) pour un coût de calcul quasi identique. Cela se comprend bien graphiquement puisque, comparé à la méthode des rectangles, on précise l’aire grâce à un « triangle supplémentaire » qui épouse mieux la courbe de \(f\).

Inconvénients : la méthode des trapèzes reste une approximation linéaire, qui sera nécessairement sensible aux fortes courbures de la fonction \(f\) que l’on cherche à intégrer.

La méthode de Simpson

Explication mathématique

Au lieu de relier deux points consécutifs par une droite, la méthode de Simpson prend trois points à chaque fois :

  • Le point de gauche : \(x_i\)
  • Le point du milieu : \(m_i = \frac{x_i + x_ {i+1}}{2}\)
  • Le point de droite : \(x_{i+1}\)

Elle trace l’unique parabole qui passe par ces trois points. Comme une parabole peut s’arrondir, elle épouse beaucoup mieux la forme des fonctions réelles qu’une simple ligne droite, comme vu dans les deux méthodes précédentes. Cette méthode nécessite donc un nombre pair de subdivisions.

Sur un petit intervalle \([x_i, x_{i+1}]\) de largeur \(h\), l’aire sous la parabole est donnée par la formule de Simpson :

Aire \(= \approx \frac{h}{6} \left[ f(x_i) + 4f(m_i) + f(x_{i+1}) \right]\)
Une fois cette formule donnée, rien de plus simple pour la coder en Python.
Voici un graphique qui permet de comprendre le fonctionnement de cette méthode :
Méthode de Simpson

Code Python

Explication du code et analyse

On code simplement la formule générale de l’approximation de l’aire par la méthode de Simpson en procédant à un calcul de somme classique. Attention cependant à bien vérifier que le nombre de points \(n\) est pair (cela se fait ici en vérifiant que le reste de la division euclidienne par deux vaut \(0\)).

Avantages : cette méthode est très efficace, même pour des \(n\) faibles. La courbe des paraboles permet de mieux épouser la forme de la fonction intégrée pour obtenir une meilleure approximation.

Inconvénients : plus complexe à coder sans erreur. La formule mathématique générale est d’ailleurs plus compliquée.

La méthode de Monte-Carlo

Explication mathématique

Cette fois-ci, on ne passe plus par des calculs d’aires sur le plan géométrique, mais par du calcul probabiliste.

Basée sur la loi forte des grands nombres, cette méthode utilise l’échantillonnage aléatoire pour estimer la valeur moyenne de la fonction sur l’intervalle. Si l’on connaît la valeur moyenne de la fonction à intégrer sur un intervalle donné, on aura juste à multiplier cette valeur par la longueur de l’intervalle pour connaître la valeur de l’intégrale.

Code Python

Explication du code et analyse

random.uniform(a, b) : génère un réel aléatoire selon une loi uniforme entre les bornes d’intervalle d’intégration. On calcule alors l’image de \(f\) par ce point d’abscisse. On réalise cela \(n\) fois et on somme tous les points obtenus.

On réalise alors la moyenne de ces points. Avec \((b – a) * moyenne\), on multiplie la longueur de l’intervalle d’intégration par la longueur moyenne estimée de la courbe de \(f\) sur cet intervalle pour estimer la valeur de l’intégrale.

Avantages : cette méthode permet, par rapport aux précédentes, de faire le pont avec les probabilités. Elle est en cela très appréciée par les concepteurs des sujets de concours.

Inconvénients : la convergence de l’estimation vers la valeur réelle de l’intégrale (pour des \(n\) de plus en plus grands) reste néanmoins plutôt lente par rapport aux autres méthodes.

Pour aller plus loin sur la méthode de Monte-Carlo, clique ici.

Recours à la bibliothèque scipy

Grâce à la bibliothèque scipy de Python (qu’il ne faudra pas oublier d’importer), on dispose d’une méthode précise propre à Python pour calculer la valeur d’une intégrale. Cependant, cette méthode est certes rapide d’utilisation, mais très opaque.

Nous la mentionnons plutôt pour vérifier les solutions d’exercice mathématiques, si tu en as besoin, ou alors pour des projets personnels, sachant qu’il est peu probable que tu sois amené(e) à l’utiliser en sujet.


Avantages : cette méthode est rapide d’utilisation et très robuste.

Inconvénients : elle utilise des bibliothèques externes non disponibles sans installation préalable et agit comme une boîte noire, puisqu’on ne peut pas connaître les fondements mathématiques du calcul.

Conclusion

En définitive, ces méthodes (non exhaustives) ont toutes des avantages et des inconvénients respectifs. De manière générale, simplicité égale approximation moins satisfaisante, d’où un arbitrage pour connaître la méthode la plus pertinente au cas posé même si, en pratique, cela sera toujours donné dans les sujets d’écrits.