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.