mathématiques appliquées (ECG 1re année) · Chapitre 11 · Exercice
Estimer par Monte-Carlo
Informatique et algorithmique · Simulation et données · niveau 3 (difficile)
Énoncé
Écrire une fonction qui estime en tirant des points au hasard dans le carré et en comptant ceux qui tombent dans le quart de disque. Combien de tirages faut-il pour obtenir deux décimales stables ? Pourquoi cette méthode est-elle mauvaise pour calculer ?
Corrigé
import numpy.random as rd
def estime_pi(n):
dedans = 0
for _ in range(n):
x, y = rd.random(), rd.random()
if x * x + y * y <= 1:
dedans += 1
return 4 * dedans / n
Le principe. Le quart de disque a pour aire et le carré . La proportion de points tombés dedans estime donc , qu'on multiplie par .
Combien de tirages. L'estimateur a pour écart-type avec , soit environ . Pour espérer deux décimales, il faut cet écart-type sous , donc
Et encore : à on obtient typiquement ou — les décimales ne sont pas stables, elles fluctuent d'une exécution à l'autre.
Pourquoi c'est une mauvaise méthode pour . L'erreur décroît en : gagner une décimale demande de multiplier le nombre de tirages par cent. Pour dix décimales il faudrait points. La méthode des trapèzes du chapitre 8, avec son erreur en , fait mieux avec mille points ; et la série , ou mieux les formules de Machin, donnent des milliers de décimales en quelques secondes.
Alors pourquoi Monte-Carlo existe. Parce que son erreur en ne dépend pas de la dimension. En dimension , une grille de trapèzes est hors de portée ; Monte-Carlo, lui, marche exactement pareil. C'est là qu'il est irremplaçable — et , en dimension deux, est justement le cas où il est le plus mauvais.