Back
Close

Recueil d'exercices pour apprendre Python au lycée

M_C
26.9K views

Calcul approché d'aires par la méthode des rectangles.

Difficulté : Moyenne

Présentation

Le but de cette fiche est de présenter la méthode des rectangles pour calculer l'aire sous une courbe représentative d'une fonction. Pour simplifier la présentation, on supposera ici que nos fonctions sont toutes positives sur l'intervalle sur lequel on les considère.

Définissons d'abord ce qu'est l'aire sous la courbe représentative d'une fonction sur un intervalle [a,b] : C'est tout simplement l'aire comprise entre la courbe représentative, l'axe des abscisses et les droites x=a et x=b.

Illustration

Présentons à présent la méthode des rectangles pour calculer l'aire sous la courbe représentative d'une fonction f sur un intervalle [a,b].
L'idée est d'approcher l'aire sous la courbe par des rectangles dont l'aire est facilement calculables comme sur la figure ci-dessous. Illustration Pour cela, on procède comme suit :

  1. On commence par choisir le nombre n de rectangles qu'on veut sous la courbe. Plus le nombre sera grand, plus la surface formée par les rectangles sera proche de l'aire sous la courbe.
  2. On répartit sur [a,b] n+1 points de la façon équitable suivante : x0=a et xn+1=xn+ban.
  3. On construit le premier rectangle de largeur ban entre x0 et x1 sur l'axe des abscisses et de hauteur f(x0). Son aire est donc de ban×f(x0)
  4. On contruit le deuxième rectangle juste à coté de même largeur ban mais qui cette fois ci est entre x1 et x2 sur l'axe des abscisses et de hauteur f(x1). Son aire est donc de ban×f(x1)
  5. On continue ainsi jusqu'à arriver au dernier rectangle qui finira en b donc commencera à xn1. Son aire sera ban×f(xn1)

Finalement, l'aire de tous ces rectangles ainsi construits sera : ban(f(x0)+f(x1)++f(xn1)).

Dans la fenêtre ci-dessous, vous avez juste à appuyer sur Run pour voir une illustration. Vous pouvez modifier les paramètres pour voir les conséquences.

Illustration de la méthode des rectangles
# Paramètres modifiables.
#Attention la fonction doit rester entre guillemets
#et être un calcul compréhensible par Python (par exemple ** pour les puissances)
#Les fonctions cos, sin, tan, exp ln etc. du module math sont utilisables sans rien devant.
#Vous pouvez par exemple tester avec f="x*(1-x)*(sin(200*x*(1-x)))**2" entre 0 et 1 pour voir que si on prend un n trop petit la méthode n'est pas très efficace
f="2*x**3-3*x**2+2"
a=-0.5
b=1.5
n=20
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

A vous de jouer

Créez un programme qui prend en entrée f, a, b et n et affiche (avec return) l'aire calculée par la méthode des rectangles.

Entrée : Une fonction f, les bornes de l'intervalle a et b et le nombre de subdivisions n.

Sortie : L'aire calculée avec la méthode des rectangles et affichée avec return. L'erreur admise pour passer les tests est de 0.05 par rapport à la valeur exacte.

Méthode des rectangles
def mon_programme(f,a,b,n):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Amélioration possible

On peut améliorer sensiblement la méthode précédente pour qu'elle donne une meilleure approximation de l'aire cherchée en prenant simplement f(xi+xi+12) au lieu de f(xi) à chaque étape comme hauteur des rectangles. Cela revient à prendre le rectangle qui passe par le point sur la courbe au milieu de chaque intervalle plutôt que sur le bord.
Graphiquement cela correspond à ces rectangles : milieu

Copiez collez votre programme précédent dans la fenêtre ci-dessous et modifier le pour qu'il calcule l'aire en utilisant le point au milieu de chaque intervalle.

Vous pourrez constater la nette amélioration de la précision par ce simple petit changement. L'erreur admise pour passer les tests est de 0.001 par rapport à la valeur exacte.

Méthode des rectangles avec point au milieu
def mon_programme(f,a,b,n):
#Ne pas toucher ce qui précède
#Les valeurs pour les variables en entrée seront automatiquement données
#Ecrire ci-dessous en n'oubliant pas d'indenter
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants