ATLAS Ouvrir dans l'atlas →

ExerciceTerminale, chapitre 6 — Calcul intégral · Exercices de synthèse

Exercice 39 La méthode de Monte-Carlo

AlgorithmiqueDémonstration

On considère la fonction ff définie sur [0 ;1][0\,;1] par f(x)=1−x2f(x)=\sqrt{1-x^{2}}, et l'on note 𝒟\mathcal{D} le domaine situé sous sa courbe, au-dessus de l'axe des abscisses.

1. Démontrer que la courbe de ff est un quart de cercle de centre OO et de rayon 11. En déduire, sans aucun calcul d'intégrale, que ∫011−x2 dx=π4\displaystyle\int_{0}^{1}\sqrt{1-x^{2}}\, \mathrm{d}x=\dfrac{\pi}{4}.

2. On tire au hasard un point P(x ;y)P(x\,;y) dans le carré [0 ;1]×[0 ;1][0\,;1]\times[0\,;1], chaque point ayant la même chance d'être choisi. On admet que la probabilité que PP appartienne à 𝒟\mathcal{D} est égale au quotient de l'aire de 𝒟\mathcal{D} par celle du carré.

(a) Que vaut cette probabilité ?

(b) Démontrer que PP appartient à 𝒟\mathcal{D} si et seulement si x2+y2⩽1x^{2}+y^{2}\leqslant 1.

3. On répète l'expérience NN fois de façon indépendante, et l'on note cc le nombre de points tombés dans 𝒟\mathcal{D}. Expliquer pourquoi 4cN\dfrac{4c}{N} fournit une valeur approchée de π\pi.

4. Deux simulations ont donné les résultats suivants : pour N=1 000N=1\,000, c=782c=782 ; pour N=10 000N=10\,000, c=7 864c=7\,864. Donner dans chaque cas l'approximation de π\pi obtenue, et la comparer à π\pi.

5. Recopier et compléter la fonction Python ci-dessous, qui renvoie l'approximation de π\pi obtenue à partir de NN tirages. L'instruction random() renvoie un nombre au hasard dans [0 ;1[[0\,;1[.

from random import random

def approx_pi(N):
    c = 0
    for i in range(N):
        x = random()
        y = random()
        if ... :
            c = ...
    return ...

6. Deux appels successifs à approx_pi(1000) renvoient des résultats différents. Est-ce normal ? Cela constituerait-il une erreur de programmation ?

7. Généralisation. Soit gg une fonction continue et positive sur [a ;b][a\,;b], majorée par un réel M>0M>0. On tire NN points au hasard dans le rectangle [a ;b]×[0 ;M][a\,;b]\times[0\,;M] et l'on note cc le nombre de points situés sous la courbe de gg. Justifier que ∫abg(x) dx\displaystyle\int_{a}^{b}g(x)\,\mathrm{d}x est approché par (b−a) M cN(b-a)\,M\,\dfrac{c}{N}.

8. Deux simulations avec N=1 000N=1\,000 donnent des approximations de π\pi dont les deux premières décimales diffèrent souvent. Cette méthode est-elle précise ? En pratique, il faut multiplier NN par 100100 pour gagner une décimale : comparer avec la méthode des milieux de l'exercice 38 et conclure.

Corrigé

1. Soit M(x ;y)M(x\,;y) un point de la courbe, avec x∈[0 ;1]x\in[0\,;1]. Alors y=1−x2y=\sqrt{1-x^{2}}, donc y⩾0y\geqslant 0 et, en élevant au carré : y2=1−x2c’est-aˋ-direx2+y2=1y^{2}=1-x^{2} \qquad \text{c'est-à-dire} \qquad x^{2}+y^{2}=1

La courbe est le quart de cercle de centre O et de rayon 1 situeˊ dans le premier quadrant\boxed{\text{La courbe est le quart de cercle de centre } O \text{ et de rayon } 1 \text{ situé dans le premier quadrant}} Le domaine 𝒟\mathcal{D} situé sous cette courbe est donc un quart de disque de rayon 11, dont l'aire vaut le quart de π×12\pi\times 1^{2} : ∫011−x2 dx=π4≈0,785\boxed{\int_{0}^{1}\sqrt{1-x^{2}}\,\mathrm{d}x=\frac{\pi}{4}\approx 0{,}785}

Figure

Le domaine sous la courbe est bien le quart du disque de rayon 11 : c'est ce que montre le cercle complet tracé en pointillés. Son aire, π4\dfrac{\pi}{4}, s'obtient donc sans aucune primitive — et c'est heureux, car aucune primitive de x↦1−x2x\mapsto\sqrt{1-x^{2}} ne figure au tableau du cours.

2. (a) Le carré a pour aire 1×1=11\times 1=1, donc : p=aire de 𝒟aire du carreˊ=π/41=π4≈0,785\boxed{p=\frac{\text{aire de } \mathcal{D}}{\text{aire du carré}} =\frac{\pi/4}{1}=\frac{\pi}{4}\approx 0{,}785}

(b) Comme x∈[0 ;1]x\in[0\,;1] et y⩾0y\geqslant 0, le point PP appartient à 𝒟\mathcal{D} si et seulement s'il est sous la courbe, c'est-à-dire y⩽1−x2y\leqslant\sqrt{1-x^{2}}. Les deux membres étant positifs, on peut élever au carré sans changer le sens : y⩽1−x2  ⟺  y2⩽1−x2  ⟺  x2+y2⩽1y\leqslant\sqrt{1-x^{2}} \iff y^{2}\leqslant 1-x^{2} \iff \boxed{x^{2}+y^{2}\leqslant 1} C'est la traduction du fait que PP est à une distance de OO inférieure à 11.

3. La proportion cN\dfrac{c}{N} de points tombés dans 𝒟\mathcal{D} est la fréquence de l'événement « le point est dans 𝒟\mathcal{D} ». Lorsque NN est grand, cette fréquence se rapproche de la probabilité π4\dfrac{\pi}{4} : cN≈π4d’ouˋπ≈4cN\frac{c}{N}\approx\frac{\pi}{4} \qquad \text{d'où} \qquad \boxed{\pi\approx\frac{4c}{N}}

Figure

4. N=1 000  :  π≈4×7821 000=3,128etN=10 000  :  π≈4×7 86410 000=3,1456\boxed{N=1\,000 \;:\; \pi\approx\frac{4\times 782}{1\,000}=3{,}128} \qquad \text{et} \qquad \boxed{N=10\,000 \;:\; \pi\approx\frac{4\times 7\,864}{10\,000}=3{,}1456} La première estimation donne une décimale exacte, la seconde deux. Rappelons que π≈3,14159\pi\approx 3{,}14159.

5.

from random import random

def approx_pi(N):
    c = 0
    for i in range(N):
        x = random()
        y = random()
        if x**2 + y**2 <= 1 :
            c = c + 1
    return 4 * c / N

6. C'est parfaitement normal, et ce n'est pas une erreur de programmation : la fonction repose sur des tirages aleˊatoires, donc son reˊsultat varie\boxed{\text{la fonction repose sur des tirages aléatoires, donc son résultat varie}} Deux exécutions ne tirent pas les mêmes points et ne comptent donc pas le même nombre cc. C'est la nature même de la méthode : elle ne fournit pas une valeur, mais une estimation.

7. Le rectangle [a ;b]×[0 ;M][a\,;b]\times[0\,;M] a pour aire (b−a)M(b-a)M, et le domaine sous la courbe de gg y est entièrement contenu puisque 0⩽g⩽M0\leqslant g\leqslant M. La probabilité qu'un point tiré au hasard tombe sous la courbe vaut donc : p=∫abg(x) dx(b−a)Mp=\frac{\displaystyle\int_{a}^{b}g(x)\,\mathrm{d}x}{(b-a)M} En remplaçant pp par la fréquence observée cN\dfrac{c}{N} : ∫abg(x) dx≈(b−a) M cN\boxed{\int_{a}^{b}g(x)\,\mathrm{d}x\approx(b-a)\,M\,\frac{c}{N}}

8. Non, la méthode est très peu précise. Pour gagner une décimale il faut multiplier NN par 100100, donc effectuer cent fois plus de tirages.

La comparaison est sans appel : avec 1 0001\,000 points, Monte-Carlo donne une ou deux décimales de π\pi, alors que la méthode des milieux de l'exercice 38 en donnait sept avec 1 0001\,000 évaluations seulement. Pour une inteˊgrale en dimension 1, Monte-Carlo n’est pas compeˊtitive\boxed{\text{Pour une intégrale en dimension } 1, \text{ Monte-Carlo n'est pas compétitive}} Son intérêt est ailleurs : en dimension élevée, découper l'espace en petits pavés devient impraticable, alors que tirer des points au hasard reste tout aussi simple.

Ouvrir dans l'atlas interactif →