Voici la même chose, mais avec une session R (c'est le cas le
* En utilisant la méthode des aiguilles de Buffon
plus courant, R étant vraiment un langage interactif), donc une
persistance d'un bloc à l'autre (et on l'exécute toujours en faisant
~C-c C-c~).
#+begin_src R :results output :session *R* :exports both
Mais calculé avec la *méthode* des
summary(cars)
[[https://fr.wikipedia.org/wiki/Aiguille_de_Buffon][aiguilles de Buffon]], on
obtiendrait comme *approximation* :
#+begin_src python :results output :exports both
from numpy.random import uniform
from numpy import pi, mean, sin, array
N = 100000
x = array([uniform(0,1) for i in range(N)])
theta = (pi/2)*x
print(2/(mean(x+sin(theta)>1)))
#+end_src
#+end_src
#+RESULTS:
#+RESULTS:
: speed dist
: 3.3638320775026913
: Min. : 4.0 Min. : 2.00
: 1st Qu.:12.0 1st Qu.: 26.00
* Avec un argument "fréquentiel" de surface
: Median :15.0 Median : 36.00
Sinon, une méthode plus simple à comprendre et ne faisant pas
: Mean :15.4 Mean : 42.98
intervenir d'appel à la fonction sinus se base sur le fait que si
: 3rd Qu.:19.0 3rd Qu.: 56.00
/X \sim U(0,1)/ et /Y \sim U(0,1)/ alors /P[X² + Y²\le1]=\pi/4/ (voir [[https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Monte-Carlo#D%C3%A9termination_de_la_valeur_de_%CF%80][méthode de Monte Carlo sur Wikipedia]]).
: Max. :25.0 Max. :120.00
Le code suivant illustre ce fait :
Et enfin, voici un exemple de sortie graphique:
#+begin_src python :results output :session :exports both
/X \sim U(0,1)/ et /Y \sim U(0,1)/ alors /P[X² + Y²\le1]=\pi/4/ (voir [[https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Monte-Carlo#D%C3%A9termination_de_la_valeur_de_%CF%80][méthode de Monte Carlo sur Wikipedia]]).