Adloun

Monte-Carlo en grande dimension

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 7 — Projets et mini-jeux · Estimation de pi par Monte-Carlo

Énoncé

Estimer le volume de la boule unité en dimension , puis en dimension , par la même méthode. Comparer au volume du cube englobant et expliquer pourquoi les méthodes exactes deviennent impraticables.

Corrigé

import random

def volume(dim, N=200000):
    dedans = 0
    for i in range(N):
        p = [random.uniform(-1, 1) for k in range(dim)]
        if sum(x*x for x in p) <= 1:
            dedans = dedans + 1
    return dedans / N * (2 ** dim)

print(volume(3))    # environ 4.19 = 4/3 pi
print(volume(10))   # environ 2.5

En dimension on retrouve , pour un cube de volume : la boule occupe plus de la moitié.

En dimension , le cube a un volume de et la boule environ — soit deux millièmes du cube. C'est le « fléau de la dimension » : presque tout le volume d'un cube est dans ses coins.

Conséquence pratique. Un quadrillage régulier à points par axe demanderait points en dimension , et l'immense majorité tomberait hors de la boule. Monte-Carlo, lui, garde le même coût quelle que soit la dimension — c'est précisément pour cela qu'on l'emploie, et non pour calculer .

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.