From f617376a48ba6c1d26dda9035ecb2469ee8a2982 Mon Sep 17 00:00:00 2001 From: Radu Urian Date: Mon, 8 Jan 2024 21:18:17 -0500 Subject: [PATCH] exercise & knit to html --- module2/exo1/toy_document_en.Rmd | 54 ++++++++++++++-------- module2/exo1/toy_document_en.html | 74 +++++++++++++++++-------------- 2 files changed, 75 insertions(+), 53 deletions(-) diff --git a/module2/exo1/toy_document_en.Rmd b/module2/exo1/toy_document_en.Rmd index 375ebac..3b2fe24 100644 --- a/module2/exo1/toy_document_en.Rmd +++ b/module2/exo1/toy_document_en.Rmd @@ -1,33 +1,49 @@ --- -title: "Your title" -author: "Radu Urian" -date: "2024-01-05" +title: "On the computation of pi" +author: "Arnaud Legrand" +date: "25 juin 2018" output: html_document --- +# Asking the maths library -```{r setup, include=FALSE} -knitr::opts_chunk$set(echo = TRUE) -``` +My computer tells me that π is *approximatively* -## Some explanations +```{r} +pi +``` -This is an R Markdown document that you can easily export to HTML, PDF, and MS Word formats. For more information on R Markdown, see . +# Buffon's Needle -When you click on the button **Knit**, the document will be compiled in order to re-execute the R code and to include the results into the final document. As we have shown in the video, R code is inserted as follows: +Applying the method of [Buffon's needle](https://en.wikipedia.org/wiki/Buffon%27s_needle_problem), we get the **approximation** -```{r cars} -summary(cars) +```{r} +set.seed(42) +N = 100000 +x = runif(N) +theta = pi/2*runif(N) +2/(mean(x+sin(theta)>1)) ``` -It is also straightforward to include figures. For example: - -```{r pressure, echo=FALSE} -plot(pressure) -``` +# Using a surface fraction argument -Note the parameter `echo = FALSE` that indicates that the code will not appear in the final version of the document. We recommend not to use this parameter in the context of this MOOC, because we want your data analyses to be perfectly transparent and reproducible. +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[X^2 + Y^2 <= 1] = π/4$ (see ["Monte Carlo method" on Wikipedia](https://en.wikipedia.org/wiki/Monte_Carlo_method)). The following code uses this approach: -Since the results are not stored in Rmd files, you should generate an HTML or PDF version of your exercises and commit them. Otherwise reading and checking your analysis will be difficult for anyone else but you. +```{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() +``` -Now it's your turn! You can delete all this information and replace it by your computational document. +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 : + +```{r} +4*mean(df$Accept) +``` + + \ No newline at end of file diff --git a/module2/exo1/toy_document_en.html b/module2/exo1/toy_document_en.html index 8acd01e..5e0b5ea 100644 --- a/module2/exo1/toy_document_en.html +++ b/module2/exo1/toy_document_en.html @@ -9,11 +9,10 @@ - + - -Your title +On the computation of pi