diff --git a/module2/exo1/toy_document_orgmode_python_en.org b/module2/exo1/toy_document_orgmode_python_en.org index 31192d9798f8d044dd47912a971fb803da4604a9..d1126aabf4636d9f209de796fbea12cf7daeb26b 100644 --- a/module2/exo1/toy_document_orgmode_python_en.org +++ b/module2/exo1/toy_document_orgmode_python_en.org @@ -18,6 +18,9 @@ from math import * pi #+end_src +#+RESULTS: +: 3.141592653589793 + * Buffon's needle Applying the method of [[https://en.wikipedia.org/wiki/Buffon%2527s_needle_problem][Buffon's needle]], we get the *approximation* @@ -30,8 +33,11 @@ theta = np.random.uniform(size=N, low=0, high=pi/2) 2/(sum((x+np.sin(theta))>1)/N) #+end_src +#+RESULTS: +: 3.128911138923655 + * Using a surface fraction argument -A method that is easier to understand and does not make use of the $\sin$ function is based on the fact that if $X\sim U(0,1)$ and $Y\sim U(0,1)$, then $P[X^2+Y^2\le 1]=\pi/4$ (see [[https://en.wikipedia.org/wiki/Monte_Carlo_method]["Monte Carlo method" on Wikipedia]]). The following code uses this approach: +A method that is easier to understand and does not make use of the $\sin$ function is based on the fact that if $X\sim U(0,1)$ and $Y\sim U(0,1)$, then $P[X^2+Y^2\leq 1] = \pi/4$ (see [[https://en.wikipedia.org/wiki/Monte_Carlo_method]["Monte Carlo method" on Wikipedia]]). The following code uses this approach: #+begin_src python :results output file :var matplot_lib_filename="figure_pi_mc2.png" :exports both :session *python* import matplotlib.pyplot as plt @@ -53,8 +59,14 @@ plt.savefig(matplot_lib_filename) print(matplot_lib_filename) #+end_src +#+RESULTS: +[[file:figure_pi_mc2.png]] + It is then straightforward to obtain a (not really good) approximation to $\pi$ by counting how many times, on average, $X^2+Y^2$ is smaller than 1: #+begin_src python :results output :session *python* :exports both 4*np.mean(accept) #+end_src + +#+RESULTS: +: 3.112