Commit 0423ead0 authored by Anton Y.'s avatar Anton Y.

task try 2

parent 65d8c41c
#+TITLE: On the computation of pi #+TITLE: On the computation of pi
#+AUTHOR: Anton Y.
# #+DATE: 2025-07-07
#+LANGUAGE: en #+LANGUAGE: en
# #+PROPERTY: header-args :eval never-export
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/htmlize.css"/>
# #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/> #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://www.pirilampo.org/styles/readtheorg/css/readtheorg.css"/>
# #+HTML_HEAD: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> #+HTML_HEAD: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
# #+HTML_HEAD: <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> #+HTML_HEAD: <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
# #+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script> #+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/lib/js/jquery.stickytableheaders.js"></script>
#+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script> #+HTML_HEAD: <script type="text/javascript" src="http://www.pirilampo.org/styles/readtheorg/js/readtheorg.js"></script>
* Asking the math library #+PROPERTY: header-args :session :exports both
My computer tells me that π is approximatively * Asking the math library
My computer tells me that $\pi$ is /approximatively/
#+begin_src python :results output :session :exports both #+begin_src python :results value :session *python* :exports both
from math import * from math import *
pi pi
#+end_src #+end_src
#+RESULTS: #+RESULTS:
: 3.141592653589793
* * Buffon's needle * * Buffon's needle
Applying the method of [[https://en.wikipedia.org/wiki/Buffon%2527s_needle_problem][Buffon's needle]], we get the *approximation*
Applying the method of Buffon's needle, we get the approximation #+begin_src python :results value :session *python* :exports both
#+begin_src python :results output :session :exports both
import numpy as np import numpy as np
np.random.seed(seed=42) np.random.seed(seed=42)
N = 10000 N = 10000
...@@ -36,15 +34,15 @@ theta = np.random.uniform(size=N, low=0, high=pi/2) ...@@ -36,15 +34,15 @@ theta = np.random.uniform(size=N, low=0, high=pi/2)
#+end_src #+end_src
#+RESULTS: #+RESULTS:
: 3.128911138923655
* Using a surface fraction argument * 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\leq 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 #+begin_src python :results output file :var matplot_lib_filename="figure_pi_mc2.png" :exports both :session *python*
function is based on the fact that if X∼U(0,1) and Y∼U(0,1), then
P[X2+Y2≤1]=π/4 (see "Monte Carlo method" on Wikipedia). The following
code uses this approach:
#+begin_src python :results file :session :var matplot_lib_filename=(org-babel-temp-file "figure" ".png") :exports both
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
np.random.seed(seed=42) np.random.seed(seed=42)
...@@ -65,13 +63,13 @@ print(matplot_lib_filename) ...@@ -65,13 +63,13 @@ print(matplot_lib_filename)
#+end_src #+end_src
#+RESULTS: #+RESULTS:
[[file:None]] [[file:figure_pi_mc2.png]]
It is then straightforward to obtain a (not really good) approximation to π It is then straightforward to obtain a (not really good) approximation
by counting how many times, on average, X2+Y2 to $\pi$ by counting how many times, on average, $X^2 + Y^2$ is smaller
is smaller than 1: than 1:
#+begin_src python :results output :session :exports both #+begin_src python :results output :session *python* :exports both
4*np.mean(accept) 4*np.mean(accept)
#+end_src #+end_src
......
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