# On the computation of pi title: "Mr" author: "TEGEGNE" date: "11 June 2020" output: ## Asking the maths library My computer tells me that π is approximatively --- pi ``` ## [1] 3.141593 ``` ## Buffon’s needle Applying the method of (https://fr.wikipedia.org/wiki/Aiguille_de_Buffon), we get the (**approximation**) ``` set.seed(42) N = 100000 x = runif(N) theta = pi/2*runif(N) 2/(mean(x+sin(theta)>1)) ``` ``` ## [1] 3.14327 ``` ## 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∼U(0,1)**) and (**Y∼U(0,1),**) then P(**[X2+Y2≤1]=π/4 **)(see “Mhttps://en.wikipedia.org/wiki/Monte_Carlo_method") The following code uses this approach: ``` 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, (**X2**)+(**Y2**) is smaller than 1 : ``` 4*mean(df$Accept) ``` ``` ## [1] 3.156 ```