Les aiguilles de Buffon Georges-Louis Leclerc de Buffon Extraits de la page Wikipedia qui lui est consacrée :
Georges-Louis Leclerc, comte de Buffon (7 septembre 1707-16 avril 1788) est un naturaliste, mathématicien, biologiste, cosmologiste, philosophe et écrivain français.
À la fois académicien des sciences et académicien français, il participe à l'esprit des Lumières. Ses théories ont influencé deux générations de naturalistes, en particulier Jean-Baptiste de Lamarck et Charles Darwin.
Concernant ses théories scientifiques Buffon estime qu'il ne s'agit ni de raisonner purement dans l'abstrait, ni d'accumuler les faits sans raisonner (comme cela se faisait souvent à cette époque). Il faut accumuler observations et expériences, et en tirer des conclusions qui permettent de « s'élever à quelque chose de plus grand et plus digne ».
Buffon va transformer le Jardin Royale des plantes d'un jardin pour plantes médicinales en un centre de recherche scientifique les plus importants d'Europe. L'expérience de l'aiguille de Buffon L'aiguille de Buffon est une expérience de probabilité proposée en 1733 par Georges-Louis Leclerc de Buffon.
Il s'agit de lancer un grand nombre de fois, de manière identitique et indépendante, une aiguille sur un parquet.
Le parquet est composé de planches parallèles de même largeur et la longueur de l'aiguille est inférieur à la largeur des lattes du parquet.
On comptabilise le nombre de fois où l'aiguille tombe à cheval sur une rainure du parquet par rapport au nombre total de lancers. Xmin = 0 Xmax = 10 Ymin = -0.1 Ymax = 10.1 peinture = "rgb(125,30,20)" transparence = 0.5 rectangle([-2,12],20,20) couleur = "rgb(125,30,20)" for(var i = 0; i < 11; i++){ droite([0,i],[10,i]) } var nb = 0 for(var i = 0; i < 100; i++){ nb = nb+aiguille(0.25) } document.getElementById("buffon").innerHTML = nb+" parmi "+100; var pia = 100/nb; var piTxt = (pia.toString()).replace('.',','); document.getElementById("buffon2").innerHTML = "π ≈ "+piTxt+"."; function aiguille(r){ xa = 10*rand() ya = 10*rand() var res = 0; alpha = 2*%PI*rand() xa1 = r*cos(alpha)+xa ya1 = r*sin(alpha)+ya xa2 = r*cos(alpha+%PI)+xa ya2 = r*sin(alpha+%PI)+ya couleur = noir if( Math.abs(Math.floor(ya2)-Math.floor(ya1))>=1){ res = 1 couleur = blanc } segment([xa1,ya1],[xa2,ya2]) return res }
En notant $a$ la longueur de l'aiguille et $\ell$ la largeur des lattes du parquet, la probabilité $p$ qu'une aiguille soit à cheval sur deux lattes est de : $$p=\dfrac{2a}{\pi\times\ell}.$$ On a ainsi $$\pi=\dfrac{2a}{p\times\ell}.$$ Lorsqu'on effectue un grand nombre de lancers on peut estimer que la fréquence des cas favorables est proche de la probabilité théorique. Notre première simulation, où $\ell=1$ et $a=0,5$, nous fournit donc l'approximation suivante pour $\pi$ :


Pour obtenir une meilleure approximation on peut augmenter le nombre d'aiguilles lancées ($1\,000$, puis $10\,000$) : $1\,000$ lancers, $\ell=1$, $a=0,5$ Xmin = 0 Xmax = 10 Ymin = -0.1 Ymax = 10.1 peinture = "rgb(125,30,20)" transparence = 0.5 rectangle([-2,12],20,20) couleur = "rgb(125,30,20)" for(var i = 0; i < 11; i++){ droite([0,i],[10,i]) } var nb = 0 for(var i = 0; i < 1000; i++){ nb = nb+aiguille(0.25) } document.getElementById("buffon3").innerHTML = nb+" parmi "+1000; var pia = 1000/nb; var piTxt = (pia.toString()).replace('.',','); document.getElementById("buffon4").innerHTML = "π ≈ "+piTxt+"."; function aiguille(r){ xa = 10*rand() ya = 10*rand() var res = 0; alpha = 2*%PI*rand() xa1 = r*cos(alpha)+xa ya1 = r*sin(alpha)+ya xa2 = r*cos(alpha+%PI)+xa ya2 = r*sin(alpha+%PI)+ya couleur = noir if( Math.abs(Math.floor(ya2)-Math.floor(ya1))>=1){ res = 1 couleur = blanc } segment([xa1,ya1],[xa2,ya2]) return res }
$10\,000$ lancers, $\ell=1$, $a=0,5$ Xmin = 0 Xmax = 10 Ymin = -0.1 Ymax = 10.1 peinture = "rgb(125,30,20)" transparence = 0.5 rectangle([-2,12],20,20) couleur = "rgb(125,30,20)" for(var i = 0; i < 11; i++){ droite([0,i],[10,i]) } var nb = 0 for(var i = 0; i < 10000; i++){ nb = nb+aiguille(0.25) } document.getElementById("buffon5").innerHTML = nb+" parmi "+10000; var pia = 10000/nb; var piTxt = (pia.toString()).replace('.',','); document.getElementById("buffon6").innerHTML = "π ≈ "+piTxt+"."; function aiguille(r){ xa = 10*rand() ya = 10*rand() var res = 0; alpha = 2*%PI*rand() xa1 = r*cos(alpha)+xa ya1 = r*sin(alpha)+ya xa2 = r*cos(alpha+%PI)+xa ya2 = r*sin(alpha+%PI)+ya couleur = noir if( Math.abs(Math.floor(ya2)-Math.floor(ya1))>=1){ res = 1 couleur = blanc } segment([xa1,ya1],[xa2,ya2]) return res }
$50\,000$ lancers, $\ell=1$, $a=0,01$ Xmin = 0 Xmax = 10 Ymin = -0.1 Ymax = 10.1 peinture = "rgb(125,30,20)" transparence = 0.5 rectangle([-2,12],20,20) couleur = "rgb(125,30,20)" for(var i = 0; i < 11; i++){ droite([0,i],[10,i]) } var nb = 0 var N = 50000 var a = 0.1 for(var i = 0; i < N; i++){ nb = nb+aiguille(a/2) } document.getElementById("buffon7").innerHTML = nb+" parmi "+N; var pia = 2*a*N/nb; var piTxt = (pia.toString()).replace('.',','); document.getElementById("buffon8").innerHTML = "π ≈ "+piTxt+"."; function aiguille(r){ xa = 10*rand() ya = 10*rand() var res = 0; alpha = 2*%PI*rand() xa1 = r*cos(alpha)+xa ya1 = r*sin(alpha)+ya xa2 = r*cos(alpha+%PI)+xa ya2 = r*sin(alpha+%PI)+ya couleur = noir if( Math.abs(Math.floor(ya2)-Math.floor(ya1))>=1){ res = 1 couleur = blanc } segment([xa1,ya1],[xa2,ya2]) return res }
Code source de l'animation Xmin = 0 Xmax = 10 Ymin = -0.1 Ymax = 10.1 peinture = "rgb(125,30,20)" transparence = 0.5 rectangle([-2,12],20,20) couleur = "rgb(125,30,20)" for(var i = 0; i < 11; i++){ droite([0,i],[10,i]) } var nb = 0 var N = 500 var a = 0.4 for(var i = 0; i < N; i++){ nb = nb+aiguille(a/2) } function aiguille(r){ xa = 10*rand() ya = 10*rand() var res = 0; alpha = 2*%PI*rand() xa1 = r*cos(alpha)+xa ya1 = r*sin(alpha)+ya xa2 = r*cos(alpha+%PI)+xa ya2 = r*sin(alpha+%PI)+ya couleur = noir if( Math.abs(Math.floor(ya2)-Math.floor(ya1))>=1){ res = 1 couleur = blanc } segment([xa1,ya1],[xa2,ya2]) return res }