--- title: "On the computation of pi" author: "Arnaud Legrand" date: "25 juin 2018" output: html_document --- # Asking the maths library My computer tells me that 𝜋 is *approximatively*![]()\ ```{r} pi ``` # Buffon’s needle Applying the method of [Buffon’s needle](https://en.wikipedia.org/wiki/Buffon%27s_needle_problem), we get the **approximation** ```{r} set.seed(42) N = 100000 x = runif(N) theta = pi/2*runif(N) 2/(mean(x+sin(theta)>1)) ``` # 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 ... (see “Monte Carlo method” on Wikipedia). The following code uses this approach: ```{r} set.seed(42) N = 1000 df = data.frame(X = runif(N), Y = runif(N)) df$Accept = (df$X**2 + df$Y**2 <=1) library(ggplot2) ggplot(df, aes(x=X,y=Y,color=Accept)) + geom_point(alpha=.2) + coord_fixed() + theme_bw() ``` It is therefore straightforward to obtain a (not really good) approximation to 𝜋 by counting how many times, on average, 𝑋2+𝑌2 is smaller than 1 : ```{r} 4*mean(df$Accept) ```