Le calcul approché d'intégrales ou de limites de sommes avec Python - Maxicours

Le calcul approché d'intégrales ou de limites de sommes avec Python

Objectif

Écrire un programme Python permettant de calculer une valeur approchée d’une intégrale.

Points clés
  • Pour déterminer une valeur approchée d’intégrales, on peut utiliser différentes méthodes : la méthode des rectangles, la méthode des milieux, la méthode des trapèzes et la méthode de Monte Carlo.
  • Exemple de programme Python traduisant la méthode des rectangles :
  • Exemple de programme Python traduisant la méthode des milieux :
  • Exemple de programme Python traduisant la méthode des trapèzes :
  • Exemple de programme Python traduisant la méthode de Monte Carlo :
Pour bien comprendre
  • Utiliser le calcul intégral.
  • Calculer des probabilités.
1. La subdivision d'un intervalle

On considère une fonction f définie sur un intervalle [a ; b].

On partage l’intervalle [a ; b] en n intervalles de même amplitude.

En zoomant sur l’axe des abscisses, on peut remarquer que :

  • la longueur de l’intervalle [a ; b] est (ba) ;
  • comme on a découpé l’intervalle en n parts égales, on obtient n sous-intervalles de longueur  ;
  • l’intervalle [a ; b] est alors gradué de la façon suivante :
    a ;  ;  ; … ; b.
    La (k + 1)e graduation est donc .

Les images de chacune de ces valeurs sont alors respectivement :
f(a) ;  ; … ;  ; … ; f(b).

2. La méthode des rectangles
a. Principe

Soit f une fonction définie sur un intervalle I et a et b deux réels de I.
On cherche à déterminer l’approximation d’une intégrale de la forme , avec a < b, en estimant l’aire sous la courbe représentative de la fonction à l’aide de rectangles situés sous la courbe.
Pour cela, on se fixe un nombre n de rectangles de même largeur, tracés de telle façon que le sommet haut à gauche appartient à la courbe représentative de f.

On peut alors calculer l’aire de chacun des rectangles.
Le premier rectangle a pour longueur f(a) et pour largeur , donc son aire est .
Le deuxième rectangle a pour longueur  et pour largeur , donc son aire est .

L’aire du (k + 1)e rectangle est alors .
Et l’aire du n-ième rectangle est égale à .
On peut donc écrire que :

              

On calcule alors cette somme à l’aide de l’algorithme suivant, en langage naturel :

Fonction rectangle(a, b, n)
   S ← 0
   Pour k allant de 0 à (n–1)
      S ← S+(b–a)/n×f(a+k×(b–a)/n)
   Fin Pour
   Retourner S
Fin Fonction
b. Programme Python
Programme Python Commentaires

On déclare la fonction à intégrer.
On écrit avec la commande return l’expression de la fonction, ici la fonction carré.

On traduit en langage Python l’algorithme expliqué dans la partie 2.a.

Exemple
Calculons une valeur approchée de l’intégrale en utilisant le programme Python décrit précédemment.
On peut calculer une première estimation en choisissant de prendre 10 rectangles, puis 1000, puis 10 000 :
On obtient donc les valeurs approchées suivantes :
  • 0,285 arrondie au millième avec 10 rectangles ;
  • 0,333 arrondie au millième avec 1000 rectangles ;
  • 0,333 arrondie au millième avec 10 000 rectangles.
Remarques

Plus n est grand, plus l’approximation est précise.

On peut également utiliser la méthode des rectangles à droite. Pour cela, on se fixe un nombre n de rectangles de même largeur tracés tel que le sommet haut à droite appartient à la courbe :

 

L’aire du (k + 1)e est alors .
Le programme Python devient :
3. La méthode des milieux
a. Principe

Soit f une fonction définie sur un intervalle I et a et b deux réels de I.
On cherche à déterminer l’approximation d’une intégrale de la forme , avec a < b, en estimant l’aire sous la courbe représentative de la fonction à l’aide de rectangles situés sous la courbe.
Pour cela, on se fixe un nombre n de rectangles de même largeur, tracés de telle façon que le sommet haut à gauche appartient à la courbe représentative de f.

De manière similaire à la méthode des rectangles, on va calculer l’aire du (k + 1)e rectangle.
Il a pour largeur et pour longueur l’image de la moyenne de  et , c’est-à-dire de , soit .
Son aire est donc égale à .
On peut donc écrire que :

              

On calcule alors cette somme à l’aide de l’algorithme suivant, en langage naturel :

Fonction milieux(a, b, n)
   S ← 0
   Pour k allant de 0 à (n–1)
      S ← S+(b–a)/n×f(a+(k+1/2)×(b–a)/n)
   Fin Pour
   Retourner S
Fin Fonction
b. Programme Python
Programme Python Commentaires

On déclare la fonction à intégrer.
On écrit avec la commande return l’expression de la fonction, ici la fonction carré.

On traduit en langage Python l’algorithme expliqué dans la partie 3.a.

Exemple
Calculons une valeur approchée de l’intégrale en utilisant le programme Python décrit précédemment.
On peut calculer une première estimation en choisissant de prendre 10 rectangles, puis 1000, puis 10 000 :
On obtient donc les valeurs approchées suivantes :
  • 0,3325 avec 10 rectangles ;
  • 0,333 arrondie au millième avec 1000 rectangles ;
  • 0,333 arrondie au millième avec 10 000 rectangles.
Remarque
Sachant que ,on peut observer qu’à n égaux les résultats sont plus précis qu’avec la méthode des rectangles.
4. La méthode des trapèzes
a. Principe

Soit f une fonction définie sur un intervalle I et a et b deux réels de I.
On cherche à déterminer l’approximation d’une intégrale de la forme , avec a < b, en estimant l’aire sous la courbe représentative de la fonction f à l’aide de trapèzes situés sous la courbe.
Pour cela, on se fixe un nombre n de trapèzes de même hauteur, tracés comme sur la figure suivante.

L’aire d’un trapèze est donné par la relation : h est appelé hauteur, b petite base et B grande base.

De manière similaire à la méthode des rectangles, on va calculer l’aire du k-ième trapèze.
Ses caractéristiques sont les suivantes :

  • sa hauteur est égale à  ;
  • sa grande base est l’image de , donc  ;
  • sa petite base est l’image de , donc .

Son aire est donc :

    

On peut donc écrire que :

              
              

On calcule alors cette somme à l’aide de l’algorithme suivant, en langage naturel :

Fonction trapezes(a, b, n)
   S ← 0
   Pour k allant de 1 à n
      S ← S+(b–a)/2n×(f(a+(k–1)×(b–a)/n)+f(a+k×(b–a)/n)
   Fin Pour
   Retourner S
Fin Fonction
b. Programme Python
Programme Python Commentaires

On déclare la fonction à intégrer.
On écrit avec la commande return l’expression de la fonction, ici la fonction carré.

On traduit en langage Python l’algorithme expliqué dans la partie 4.a.

Exemple
Calculons une valeur approchée de l’intégrale en utilisant le programme Python décrit précédemment.
On peut calculer une première estimation en choisissant de prendre 10 rectangles, puis 1000, puis 10 000 :
On obtient donc les valeurs approchées suivantes :
  • 0,335 avec 10 rectangles ;
  • 0,333 arrondie au millième avec 1000 rectangles ;
  • 0,333 arrondie au millième avec 10 000 rectangles.
5. La méthode de Monte Carlo
a. Principe

Soit f une fonction définie sur un intervalle I et a et b deux réels de I.
On cherche à déterminer l’approximation d’une intégrale de la forme , avec a < b, en estimant l’aire sous la courbe représentative de la fonction f de manière statistique.

On commence par déterminer un rectangle de largeur (b – a) et de longueur f(m)m est le maximum de la fonction sur l’intervalle [a ; b]. Comme f est continue sur [a ; b], le théorème des valeurs intermédiaires assure son existence.
En reprenant l’exemple précédent, on obtient la configuration suivante :

Ici, le maximum est atteint en b.
Si on prend un point au hasard dans ce rectangle, la probabilité qu’il soit situé sous la courbe est alors égale à où nous avons :

  • As est l’aire située sous la courbe, donc ;
  • AR est l’aire du rectangle, donc AR = (b – a)f(m).

On en déduit donc que :

Comme on ne connait pas la probabilité p, on peut l'estimer en prenant un nombre N de points au hasard dans le rectangle et en comptant le nombre n d’entre eux situés sous la courbe.
La fréquence définie par  est alors une approximation de p. Plus N est grand, plus f est proche de p.
On a donc avec f la fréquence des points obtenus sous la courbe.

Pour générer des points au hasard dans le rectangle, il suffit de générer :

  • une abscisse x comprise entre a et b avec la commande random ;
  • une ordonnée y comprise entre 0 et f(m) avec la commande random.

Si y ≤ f(x), alors le point est sous la courbe, sinon il est au-dessus. Pour N points obtenus de manière aléatoire, on a donc l’algorithme suivant, en langage naturel :

Fonction montecarlo(a, b, m, n)
   n ← 0
   Pour k allant de 1 à N
      x ← random(a,b)
      y ← random(0,f(m))
      Si yf(x) alors
         n ← n+1
      Fin Si
   Fin Pour
   I ← (n/N)×(b–a)×f(m)
   Retourner I
Fin Fonction

I est l’approximation de l’intégrale.

b. Programme Python
Programme Python Commentaires

On importe la bibliothèque random.

On déclare la fonction. On écrit avec la commande return l’expression de la fonction, ici la fonction carré.

On traduit en langage Python l’algorithme expliqué dans la partie 5.a.

La fonction uniform(a,b) génère aléatoirement un nombre réel compris entre a et b.

Exemple
Calculons une valeur approchée de l’intégrale en utilisant le programme Python décrit précédemment.
On sait que la fonction carré admet un maximum en 1 sur l’intervalle [0 ; 1]. On peut calculer une première estimation en choisissant de prendre 10 points, puis 1000, puis 10 000 :
On obtient donc les valeurs approchées suivantes :
  • 0,1 avec 10 points ;
  • 0,333 arrondie au millième avec 1000 points ;
  • 0,333 arrondie au millième avec 10 000 points.
Remarque
La génération des points étant aléatoire, chaque usage de la fonction renverra un résultat légèrement différent. Voici un échantillon de trois approximations à l’aide de 10 000 points.

Vous avez déjà mis une note à ce cours.

Découvrez les autres cours offerts par Maxicours !

Découvrez Maxicours

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

quote blanc icon

Découvrez Maxicours

Exerce toi en t’abonnant

Des profs en ligne

  • 6 j/7 de 17 h à 20 h
  • Par chat, audio, vidéo
  • Sur les matières principales

Des ressources riches

  • Fiches, vidéos de cours
  • Exercices & corrigés
  • Modules de révisions Bac et Brevet

Des outils ludiques

  • Coach virtuel
  • Quiz interactifs
  • Planning de révision

Des tableaux de bord

  • Suivi de la progression
  • Score d’assiduité
  • Un compte Parent

Inscrivez-vous à notre newsletter !

Votre adresse e-mail sera exclusivement utilisée pour vous envoyer notre newsletter. Vous pourrez vous désinscrire à tout moment, à travers le lien de désinscription présent dans chaque newsletter. Conformément à la Loi Informatique et Libertés n°78-17 du 6 janvier 1978 modifiée, au RGPD n°2016/679 et à la Loi pour une République numérique du 7 octobre 2016, vous disposez du droit d’accès, de rectification, de limitation, d’opposition, de suppression, du droit à la portabilité de vos données, de transmettre des directives sur leur sort en cas de décès. Vous pouvez exercer ces droits en adressant un mail à : contact-donnees@sejer.fr. Vous avez la possibilité de former une réclamation auprès de l’autorité compétente. En savoir plus sur notre politique de confidentialité