Aiguille de Buffon
L'aiguille de Buffon est une expérience de probabilité proposée en 1733[1] par Georges-Louis Leclerc de Buffon, un scientifique français du XVIIIe siècle. Cette expérience fournit une approximation du nombre Pi. Son analyse met en œuvre un cas simple d'espace de probabilités bidimensionnel et continu.
Sommaire |
Procédé pratique [modifier]
Il s'agit de lancer un grand nombre de fois une aiguille sur un parquet. Le parquet est composé de planches parallèles de même largeur. On comptabilise le nombre de fois où l'aiguille tombe à cheval sur [au moins] une rainure du parquet (cas "favorable") par rapport au nombre de lancers totaux. Au fur et à mesure que le nombre de lancers augmente, le quotient se rapproche d'un certain nombre permettant de retrouver
(par exemple, si la longueur de l'aiguille est égale à la largeur d'une planche, ce nombre sera 2⁄π).
Conditions, hypothèses [modifier]
Pour que l'expérience fonctionne correctement,
- Les lancers successifs doivent être nombreux, indépendants, et on doit considérer une situation d'équiprobabilité (la position de l'aiguille est indifférente, en position et en angle, par rapport au parquet).
- Tous les lancers doivent être reproduits dans des conditions identiques.
Pour que la formule soit simple à calculer,
- La longueur de l'aiguille doit être inférieure ou égale à la largeur d'une planche du parquet.
Étude mathématique [modifier]
Soient :
le réel positif correspondant à la largeur d'une latte de parquet ;
le réel positif correspondant à la longueur de l'aiguille ;
le réel compris entre
et
correspondant à l'angle géométrique formé avec les rainures du parquet ;
le réel positif correspondant à la distance du centre de l'aiguille à la rainure la plus proche.
D'après les hypothèses, et en utilisant toutes les symétries, on peut considérer que :
suit une loi uniforme continue sur ![[0;\pi/2]](//upload.wikimedia.org/math/a/9/e/a9e4aa60b6eea84f3117c2d08d745567.png)
suit une loi uniforme continue sur ![[0;l/2]](//upload.wikimedia.org/math/2/6/9/2691e29c27a9013a64a9b83d8f668338.png)
Point de vue géométrique simple [modifier]
Considérons
lancers (
assez grand) de cette aiguille. On peut considérer alors que toutes les positions différentes de l'aiguille mises bout à bout forme un polygone à
côtés. Plus
est grand plus ce polygone se rapprochera d'un cercle. Le périmètre P de ce cercle vaut alors
. Le diamètre de ce cercle vaudra
. Le problème revient à savoir : Combien de rainures parallèles sont coupées par le polygone, ou encore combien y a-t-il de rainures à l'intérieur du cercle ?
Le nombre de rainures R coupées est donné par
. Finalement la probabilité que l'aiguille coupe une rainure est donnée par
et en simplifiant
Cas limite [modifier]
Considérons un lancer isolé. Si l'aiguille touche un point de la rainure avec sa pointe sans la chevaucher, alors on a un triangle rectangle dont l'hypoténuse est la moitié de l'aiguille, un côté est la longueur
, l'autre côté une portion de la rainure. On a alors :

Cas défavorable [modifier]
Par conséquent, si l'aiguille est pleinement sur une planche, on aura :

Cas favorable [modifier]
Si elle chevauche au moins une rainure (la plus proche), on aura :

Analyse [modifier]
On traite ici du cas simple (Erreur math (erreur lexicale): a ⇐ l ).
De même que, pour les probabilités discrètes on forme le quotient des cas "favorables" aux cas "totaux",
on aura dans
x
la probabilité pour une aiguille de tomber sur une rainure l'expression :

Soit (dessiner l'espace
et la limite):


Après une multitude de lancers, d'après la loi des grands nombres, la valeur pratique tendra à se rapprocher de la valeur théorique
. On peut alors facilement retrouver pi en connaissant les données de l'expérience (
et
).
En effet, soit
la proportion qui estime
: alors on a un estimateur pour 
Analyse pour
[modifier]
On traite ici du cas où l'aiguille est plus longue que l'écart entre les lames du parquet (penser à des aiguilles à tricoter). Le cas "favorable" est encore : "l'aiguille croise [au moins] une lame de parquet".
Le cas "défavorable" étant plus facile à exprimer mathématiquement, on a (dessiner l'espace
et la limite) :

On passe les étapes intermédiaires pour obtenir :

On confirme que pour
, on retrouve la formule précédente (établie pour
: une aiguille courte).
La formule permet encore d'estimer
en fonction de
où
est la proportion qui estime
puisque
a
en facteur (le faire).
En posant
et en développant au voisinage de
, on trouve l'expression de la probabilité pour une très longue aiguille (formule approchée) :

qui tend vers 1 pour
très grand, comme on l'espérait.
Simulation numérique [modifier]
![]() |
0.1 | 0.2 | 0.5 | 1 | 2 | 5 | 10 | 100 |
|---|---|---|---|---|---|---|---|---|
| formule exacte | 0.4 | -0.1 | 0.1 | 0.001 | -0.1 | -0.06 | -0.7 | 1.05 |
| formule approchée | - | - | - | - | -2 | -0.5 | -0.3 | 1.05 |
Conclusions :
- la meilleure estimation est obtenue pour

- la dégradation de l'estimation est rapide, mais se stabilise rapidement
- l'hypothèse
n'est pas nécessaire pour conduire l'expérience - la formule approchée (pour
grand) donne de bons résultats dans son domaine d'application
Programme (python) de simulation [modifier]
# let l=2, we must generate a uniform x in [0,1] # we must also generate a uniform theta in [0, pi/2] # we have : # success if sin(theta) > 2x/a # failure otherwise import random import math Max=1000000 for a in [0.2, 0.4, 1, 2, 4, 10, 20, 200]: Count=0 for i in range(Max): x=random.uniform(0,1) t=random.uniform(0,math.pi/2) if math.sin(t)>2*x/float(a): Count+=1 if a <=2: print a/2.,100*(a/(float(Count)/float(Max))-math.pi)/math.pi else: P=float(Count)/float(Max) print a/2.,100*(float(a)/(P-1.)*(1.-math.sqrt(1-(2/float(a))**2))-2/(P-1.)*math.asin(2./float(a))-math.pi)/math.pi print a/2.,100.*(2/float(a)/(1.-P)-math.pi)/math.pi
Programme en langage R de simulation numérique et graphique [modifier]
# 50000 (par défaut) simulations de jets de baguette. # Illustration graphique des 10 premiers jets. # a est la longueur de la baguette. L est la largeur d'une latte. # Cas a<L. a = 8, L = 10 par défaut. On peut les modifier en lançant # la fonction par exemple : buffon(a = 4, L = 4)… buffon <- function(a = 8, L = 10, nbsim = 50000){ r <- runif(nbsim, 0, L / 2) xG <- runif(10, 0, L) ; yG <- rep(a / 2, 10) ; t <- 1:10 Theta <- runif(nbsim, 0, pi) bSinTheta <- a / 2 * sin(Theta) xA <- xG - bSinTheta[t] ; yA <- a / 2 + a / 2 * cos(Theta)[t] xB <- xG + bSinTheta[t] ; yB <- a / 2 - a / 2 * cos(Theta)[t] SerieCoupe <- r < bSinTheta freqCoupe <- sum(SerieCoupe) / nbsim # Affichage du résultat et des graphiques cat("Fréquence simulée de l'événement l'aiguille coupe une rainure", "\nà partir de", nbsim, "simulations =", freqCoupe, "\n\n") plot(t, t, xlim = c(- L / 2, 3 * L / 2), ylim = c(0, a), type = "n", asp = 1, main = "Simulation avec R de 10 lancers de baguette") abline(v = c(0, L), col = "red") for(i in t){ points(xG[i], yG[i], pch = "+") points(xA[i], yA[i], pch = "A", cex = .7) points(xB[i], yB[i], pch = "B", cex = .7) lines(c(xA[i], xB[i]), c(yA[i], yB[i])) Sys.sleep(1) } }
Résultat numérique de la fonction R : buffon() :
Fréquence simulée de l'événement "l'aiguille coupe une rainure" à partir de 50000 simulations = 0.5079
Résultat graphique de la fonction R : buffon() :
Notes et références [modifier]
- Mémoire sur le jeu du Franc Carreau, présenté à l’Académie des Sciences (1733)
Voir aussi [modifier]
Articles connexes [modifier]
- Georges-Louis Leclerc, comte de Buffon
- Pi
- Probabilités
- Méthode de Monte-Carlo
- Nouille de Buffon (en)
Bibliographie [modifier]
- Martin Aigner et Günter M. Ziegler (trad. Nicolas Puech), Raisonnements divins : quelques démonstrations mathématiques particulièrement élégantes, Springer Verlag, 2e éd., 2006, 270 p. (ISBN 978-2-287-33845-8).
le réel compris entre
et
correspondant à l'![[0;\pi/2]](http://upload.wikimedia.org/math/a/9/e/a9e4aa60b6eea84f3117c2d08d745567.png)
![[0;l/2]](http://upload.wikimedia.org/math/2/6/9/2691e29c27a9013a64a9b83d8f668338.png)



