Adloun

Estimer une aire par tirage au sort

Exercice de TD · niveau 3 (difficile) · mathématiques complémentaires (terminale), chapitre 7 — Intégration

Énoncé

Estimer une aire par tirage au sort.

La méthode de Monte-Carlo consiste à tirer des points au hasard dans un rectangle contenant le domaine, puis à compter la proportion de ceux qui tombent dedans. C'est ainsi que les logiciels d'analyse d'images mesurent la surface d'une feuille ou d'une tache sur une photographie.

Corrigé


from math import exp, sqrt
from random import random, seed

def monte_carlo(f, a, b, hmax, n):
    dedans = 0
    for _ in range(n):
        x = a + (b - a) * random()
        y = hmax * random()
        if y <= f(x):
            dedans = dedans + 1
    return (b - a) * hmax * dedans / n

demi_cercle = lambda x: sqrt(1 - x * x)
seed(7)
print("quart de disque, n = 10^3 :", round(monte_carlo(demi_cercle, 0, 1, 1, 1000), 5))
seed(7)
print("quart de disque, n = 10^5 :", round(monte_carlo(demi_cercle, 0, 1, 1, 100000), 5))
print("pi / 4                    :", round(3.141592653589793 / 4, 5))

cloche = lambda x: exp(-x * x)
seed(7)
print("cloche, n = 10^4          :", round(monte_carlo(cloche, 0, 1, 1, 10000), 5))
seed(7)
print("cloche, n = 10^6          :", round(monte_carlo(cloche, 0, 1, 1, 1000000), 5))

```text

quart de disque, n = 10^3 : 0.788 quart de disque, n = 10^5 : 0.78556 pi / 4 : 0.7854 cloche, n = 10^4 : 0.7499 cloche, n = 10^6 : 0.7468 ``` Le test réussit : contre . On accorde donc du crédit à l'estimation — que les trapèzes avec confirment : .

Deux enseignements. D'abord, on valide toujours une méthode numérique sur un cas dont on connaît la réponse avant de la lâcher sur un cas inconnu. Ensuite, Monte-Carlo est lent : multiplier par ne gagne qu'un facteur sur la précision. Sa vertu n'est pas la vitesse, c'est de fonctionner là où le découpage régulier est impossible.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.