Aller au contenu

Leçon 10

Python, la méthode de Monte-Carlo

Vidéo 10 : Python, la méthode de Monte-Carlo · 4 min 09 s · sous-titres en français

Le cours écrit

10.1 Le principe

On tire un point au hasard dans un carré d'aire 11. La probabilité qu'il tombe dans une zone du carré est égale à l'aire de cette zone. Or, lorsque nn est grand, sauf exception, la fréquence observée est proche de la probabilité. Compter les points tombés dans la zone donne donc une estimation de son aire : aire≈nombre de points dans la zonen.\text{aire} \approx \frac{\text{nombre de points dans la zone}}{n}.

10.2 Estimer le nombre π\pi

La zone est le quart de disque de rayon 11 centré à l'origine, d'aire π4\dfrac{\pi}{4}. Un point (x ;y)(x\,;y) du carré est dans cette zone si sa distance à l'origine est au plus 11, c'est-à-dire, d'après le théorème de Pythagore, si x2+y2≤1x^2 + y^2 \leq 1. Si ff est la fréquence des points dans la zone, alors f≈π4f \approx \dfrac{\pi}{4}, donc π≈4×f\pi \approx 4 \times f.

from random import random

def estimation_pi(n):
    compteur = 0
    for i in range(n):
        x = random()
        y = random()
        if x**2 + y**2 <= 1:
            compteur = compteur + 1
    return 4 * compteur / n

La fonction random() renvoie un nombre au hasard entre 00 et 11. En langage naturel, la ligne de comptage s'écrit « compteur ←\leftarrow compteur + 1+\,1 ».

Exemple 28. Une exécution a donné les résultats suivants. Le hasard change à chaque exécution : tes résultats seront différents.

nn 100100 1 0001\,000 1 000 0001\,000\,000
estimation_pi(n) 3,23{,}2 3,1283{,}128 3,14113{,}1411

L'estimation s'améliore en général quand nn augmente, mais lentement.

10.3 Estimer l'aire sous la parabole

On cherche l'aire sous la parabole d'équation y=x2y = x^2, entre 00 et 11. Cette zone est dans le même carré, et un point y est si y≤x2y \leq x^2. Il suffit de changer le test, et de renvoyer la fréquence.

def aire_parabole(n):
    compteur = 0
    for i in range(n):
        x = random()
        y = random()
        if y <= x**2:
            compteur = compteur + 1
    return compteur / n

Exemple 29. Une exécution a donné les résultats suivants.

nn 100100 1 0001\,000 1 000 0001\,000\,000
aire_parabole(n) 0,310{,}31 0,3330{,}333 0,3330{,}333

Ces résultats conduisent à conjecturer que l'aire vaut 13\dfrac13. C'est bien la valeur exacte : tu le démontreras en Terminale.

Lire le cours complet du chapitre

Exercices 19 et 20

  • Exercice 19 : lire et modifier un programme
  • Exercice 20 : simuler une répétition

Exercices du chapitre (PDF, 150 Ko)

Corrigés

Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.

Corrigés du chapitre (PDF, 134 Ko)

Tu es hors connexion. Les chapitres téléchargés restent disponibles dans Hors connexion.