Commit ef2cd9b9 authored by Jamal KHAN's avatar Jamal KHAN

Update format fix

parent 3899f757
#+TITLE: On the computation of pi
#+TITLE: On the computation of pi
#+LANGUAGE: en
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
......@@ -10,7 +10,7 @@
#+PROPERTY: header-args :session :exports both
* Asking the maths library
* Asking the math library
My computer tells me that $\pi$ is /approximatively/
#+begin_src python :results value :session *python* :exports both
......@@ -18,28 +18,22 @@ 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*
#+begin_src python :results value :session *python* :exports both
import numpy as np
np.random.seed(seed=42)
N = 1000
N = 10000
x = np.random.uniform(size=N, low=0, high=1)
theta = np.random.uniform(size=N, low=0, high=pi/2)
2/(sum((x+np.sin(theta))>1)/N)
#+end_src
#+RESULTS:
: 3.144654088050314
* 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\simU(0,1)$ and $Y\simU(0,1)$, then $P[X^2+Y^2 \le1]=\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\le 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 :session *python* :var matplot_lib_filename="figure_pi_mc2.png" :exports both
#+begin_src python :results output file :var matplot_lib_filename="figure_pi_mc2.png" :exports both :session *python*
import matplotlib.pyplot as plt
np.random.seed(seed=42)
......@@ -59,14 +53,8 @@ plt.savefig(matplot_lib_filename)
print(matplot_lib_filename)
#+end_src
#+RESULTS:
: 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 value :session *python* :exports both
#+begin_src python :results output :session *python* :exports both
4*np.mean(accept)
#+end_src
#+RESULTS:
: 3.112
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment