Update toy_document_en.Rmd

parent d3cd3aaa
1 On the computation of π # On the computation of π
1.1 Asking the maths library # Nicholas
My computer tells me that π is approximatively # October 21, 2025
In [1]: from math import *
print(pi)
3.141592653589793
1.2 Buffon’s needle
Applying the method of Buffon’s needle, we get the approximation
In [2]: import numpy as np
np.random.seed(seed=42)
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)
Out[2]: 3.1289111389236548
1.3 Using a surface fraction argument # Asking the math library
A method that is easier to understand and does not make use of the sin function is based on the pi
fact that if X ∼ U(0, 1) and Y ∼ U(0, 1), then P[X ## [1] 3.141593
2 + Y
2 ≤ 1] = π/4 (see "Monte Carlo method" # Buffon’s needle
on Wikipedia). The following code uses this approach: set.seed(42)
In [3]: %matplotlib inline N = 100000
import matplotlib.pyplot as plt x = runif(N)
np.random.seed(seed=42) theta = pi/2 * runif(N)
2 / (mean(x + sin(theta) > 1))
## [1] 3.14327
# Using an area fraction argument
set.seed(42)
N = 1000 N = 1000
x = np.random.uniform(size=N, low=0, high=1) df = data.frame(X = runif(N), Y = runif(N))
y = np.random.uniform(size=N, low=0, high=1) df$Accept = (df$X**2 + df$Y**2 <= 1)
accept = (x*x+y*y) <= 1
reject = np.logical_not(accept) library(ggplot2)
fig, ax = plt.subplots(1) ggplot(df, aes(x = X, y = Y, color = Accept)) +
ax.scatter(x[accept], y[accept], c='b', alpha=0.2, edgecolor=None) geom_point(alpha = .2) + coord_fixed() + theme_bw()
ax.scatter(x[reject], y[reject], c='r', alpha=0.2, edgecolor=None)
ax.set_aspect('equal')
It is then straightforward to obtain a (not really good) approximation to π by counting how 4 * mean(df$Accept)
many times, on average, X ## [1] 3.156
2 + Y
2
is smaller than 1:
In [4]: 4*np.mean(accept)
Out[4]: 3.1120000000000001
{r}## [1] 3.156
\ No newline at end of file
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