La méthode de Monte-Carlo est une méthode faisant intervenir des tirages aléatoires pour estimer une valeur numérique.
On cherche à utiliser cette méthode pour estimer l'aire sous la parabole d'équation y = x^2 entre les points d'abscisse -1 et 1, c'est-à-dire l'aire hachurée sur la courbe.

On admet que la probabilité qu'un point soit dans une surface (incluse dans le rectangle) est égale au rapport de l'aire de cette surface sur celle du rectangle.
On note A l'aire sous la parabole d'équation y = x^2 entre les points d'abscisse -1 et 1.
On note E l'événement : « Un point choisi au hasard dans ABCD fait partie de A ».
Quelle est la relation entre la probabilité de E et l'aire A ?
On a admis que la probabilité qu'un point soit dans une surface (incluse dans le rectangle) est égale au rapport de l'aire de cette surface sur celle du rectangle.
Or, on cherche la probabilité qu'un point choisi au hasard dans le rectangle ABCD soit dans la surface dont on cherche à estimer l'aire A.
Donc cette probabilité est égale au rapport entre l'aire A et l'aire de ABCD.
Donc :
P(E) = \dfrac{A}{A_{ABCD}}
Or :
A_{ABCD} = 2 \times 1 = 2
Donc P(E) = \dfrac{A}{2} .
Afin d'estimer la probabilité de E on va écrire un algorithme qui, pour un nombre n de points tirés au hasard dans le carré ABCD, calcule le rapport entre le nombre de point dans l'aire A et le nombre de point total.
Quelle fonction écrite en Python permet de tirer un point au hasard dans le rectangle ABCD ?
On veut définir une fonction nommée coordonnee_aleatoire qui renvoie deux flottants x et y qui sont les coordonnées d'un point dans le carré ABCD.
Si le point (x,y) appartient au carré ABCD, alors :
-1 \leqslant x \leqslant 1
0 \leqslant y \leqslant 1
En Python, la fonction uniform importée de la bibliothèque random (par la commande from random import *) permet de générer un flottant défini aléatoirement dans un intervalle donné.
Par exemple, la commande uniform(-1,1) renvoie un flottant entre -1 et 1.
La fonction écrite en Python qui permet de tirer un point au hasard dans le rectangle ABCD est donc la suivante :
def coordonnee_aleatoire():
x=uniform(-1,1)
y=uniform(0,1)
return (x,y)
Grâce à l'algorithme précédent, on peut obtenir un point de coordonnées x,y dans le rectangle ABCD.
Pour un point de coordonnées (x,y), quelle fonction écrite en Python permet de déterminer si ce point appartient à l'aire sous la parabole décrite par la fonction y=x^2 ?
Soit un point de coordonnées x,y appartenant au carré ABCD.
Le point de coordonnées x,y appartient à l'aire sous la courbe définie par la fonction y=x^2 si et seulement si :
y \leqslant x^2
La fonction écrite en Python qui permet de déterminer si point de coordonnées (x,y) appartient à l'aire sous la parabole décrite par la fonction y=x^2 est la suivante :
def appartient_aire(x,y):
if y <= x**2:
return True
else :
return False
En utilisant les deux fonctions précédentes, quelle fonction écrite en Python permet pour un nombre de points n, choisis au hasard dans ABCD, de compter le nombre de points dans l'aire sous la courbe décrite par la fonction y=x^2 ?
Soit un nombre n.
Pour choisir un point au hasard dans le rectangle ABCD, il suffit d'utiliser la fonction coordonnee_aleatoire() de la question 2. On obtient les coordonnées (x,y) d'un tel point.
Pour tester si ce point est dans l'aire sous la courbe, il suffit d'utiliser la fonction appartient_aire(x,y) de la question 3. On obtient True si le point fait partie de l'aire voulue et False s'il n'appartient pas à l'aire voulue.
Pour n différents tests, il suffit de compter le nombre de fois ou la fonction appartient_aire(x,y) donne True.
La fonction écrite en Python qui permet pour un nombre de points n, choisis au hasard dans ABCD, de compter le nombre de points dans l'aire sous la courbe décrite par la fonction y=x^2 est la suivante :
def nombre_points(n):
P=0.0
for k in range(n):
(x,y)=coordonnee_aleatoire()
if appartient_aire(x,y) is True:
P+=1
return(P)
Pour n = \text{10 000}, la fonction nombre_points a donné un résultat de \text{3 319}.
Quelle est l'approximation de l'aire sous la courbe d'équation y=x^2 entre les points d'abscisse -1 et 1 ?
D'après l'énoncé, en tirant aléatoirement 10 000 points dans le rectangle ABCD, 3 319 sont dans l'aire sous la courbe d'équation y=x^2.
La probabilité de l'événement E défini à la question 1 est donc :
P(E) = \dfrac{\text{3 319}}{\text{10 000}}
Or, on a montré que :
P(E) = \dfrac{A}{2}
Donc :
A= 2 P(E)
A = 2 \dfrac{\text{3 319}}{\text{10 000}}
A \approx 0{,}66
La méthode de Monte-Carlo permet d'estimer l'aire sous la courbe d'équation y=x^2 entre les points d'abscisse -1 et 1 à A \approx 0{,}66.