From cb7988d1180a8dcd86e129f1fc091fb65d478c01 Mon Sep 17 00:00:00 2001 From: David Elser Date: Thu, 4 Mar 2021 10:18:27 +0100 Subject: [PATCH] final? --- module2/exo1/toy_document_en.Rmd | 44 ++++++++++++++++--------- module2/exo1/toy_document_en.html | 53 +++++++++++++++++++------------ 2 files changed, 62 insertions(+), 35 deletions(-) diff --git a/module2/exo1/toy_document_en.Rmd b/module2/exo1/toy_document_en.Rmd index 465fade..81d98b2 100644 --- a/module2/exo1/toy_document_en.Rmd +++ b/module2/exo1/toy_document_en.Rmd @@ -1,34 +1,48 @@ --- title: "On the computation of pi" -author: "Arnaud Legrand" -date: "25 juin 2018" +author: "*Arnaud Legrand*" +date: "*25 juin 2018*" output: html_document --- -# Asking the maths libary -My computer tells me that $\pi$ is approximatively ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` -## Some explanations +# Asking the maths libary +My computer tells me that $\pi$ is *approximatively* -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 . +```{r} +pi +``` -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: +## Buffon's needle +Applying the methond 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: +## Using a surface fraction arugment +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 ["Monte Carlo method" on Wikipedia](https://en.wikipedia.org/wiki/Monte_Carlo_method)). 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() -```{r pressure, echo=FALSE} -plot(pressure) ``` -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. +It is then straightforward to obtain a (not really good) approximation to $\pi$ by counting how many times, on average, $X^2 + Y^2$ is smaller than 1: -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} +4*mean(df$Accept) +``` -Now it's your turn! You can delete all this information and replace it by your computational document. diff --git a/module2/exo1/toy_document_en.html b/module2/exo1/toy_document_en.html index c670b52..e77f235 100644 --- a/module2/exo1/toy_document_en.html +++ b/module2/exo1/toy_document_en.html @@ -375,32 +375,45 @@ $(document).ready(function () {

On the computation of pi

-

Arnaud Legrand

-

25 juin 2018

+

Arnaud Legrand

+

25 juin 2018

Asking the maths libary

-

My computer tells me that \(\pi\) is approximatively

-
-

Some explanations

-

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 http://rmarkdown.rstudio.com.

-

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:

-
summary(cars)
-
##      speed           dist       
-##  Min.   : 4.0   Min.   :  2.00  
-##  1st Qu.:12.0   1st Qu.: 26.00  
-##  Median :15.0   Median : 36.00  
-##  Mean   :15.4   Mean   : 42.98  
-##  3rd Qu.:19.0   3rd Qu.: 56.00  
-##  Max.   :25.0   Max.   :120.00
-

It is also straightforward to include figures. For example:

-

-

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.

-

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.

-

Now it’s your turn! You can delete all this information and replace it by your computational document.

+

My computer tells me that \(\pi\) is approximatively

+
pi
+
## [1] 3.141593
+
+

Buffon’s needle

+

Applying the methond of Buffon’s needle, 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 arugment

+

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 “Monte Carlo method” on Wikipedia). 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)
+
## Registered S3 methods overwritten by 'ggplot2':
+##   method         from 
+##   [.quosures     rlang
+##   c.quosures     rlang
+##   print.quosures rlang
+
ggplot(df, aes(x=X,y=Y,color=Accept)) + geom_point(alpha=.2) + coord_fixed() + theme_bw()
+

+

It is then straightforward to obtain a (not really good) approximation to \(\pi\) by counting how many times, on average, \(X^2 + Y^2\) is smaller than 1:

+
4*mean(df$Accept)
+
## [1] 3.156
-- 2.18.1