no commit message

parent acc7fb02
......@@ -6,39 +6,44 @@
"metadata": {},
"outputs": [],
"source": [
"---\n",
"title: \"À propos du calcul de pi\"\n",
"author: \"Arnaud Legrand\"\n",
"date: \"25 juin 2018\"\n",
"output: html_document\n",
"---\n",
"\n",
"```{r setup, include=FALSE}\n",
"knitr::opts_chunk$set(echo = TRUE)\n",
"À propos du calcul de pi\n",
"Arnaud Legrand\n",
"25 juin 2018\n",
"En demandant à la lib maths\n",
"Mon ordinateur m'indique que ( \\pi ) vaut approximativement :\n",
"Mon ordinateur m’indique que π\n",
" vaut approximativement\n",
"\n",
"pi\n",
"## [1] 3.141593\n",
"En utilisant la méthode des aiguilles de Buffon\n",
"Mais calculé avec la méthode des aiguilles de Buffon, on obtiendrait comme approximation :\n",
"\n",
"set.seed(42)\n",
"N <- 100000\n",
"x <- runif(N)\n",
"theta <- pi/2 * runif(N)\n",
"2 / (mean(x + sin(theta) > 1))\n",
"Avec un argument « fréquentiel » de surface\n",
"Sinon, une méthode plus simple à comprendre et ne faisant pas intervenir d'appel à la fonction sinus se base sur le fait que si ( X \\sim U(0,1) ) et ( Y \\sim U(0,1) ) alors ( \\mathbb{P}[X^2 + Y^2 \\le 1] = \\pi/4 ). Le code suivant illustre ce fait :\n",
"set.seed(42)\n",
"N <- 1000\n",
"df <- data.frame(X = runif(N), Y = runif(N))\n",
"df $ Accept <- (df $ X^2 + df$Y^2 <= 1)\n",
"N = 100000\n",
"x = runif(N)\n",
"theta = pi/2*runif(N)\n",
"2/(mean(x+sin(theta)>1))\n",
"## [1] 3.14327\n",
"Avec un argument “fréquentiel” de surface\n",
"Sinon, une méthode plus simple à comprendre et ne faisant pas intervenir d’appel à la fonction sinus se base sur le fait que si X∼U(0,1)\n",
" et Y∼U(0,1)\n",
" alors P[X2+Y2≤1]=π/4\n",
" (voir méthode de Monte Carlo sur Wikipedia). Le code suivant illustre ce fait:\n",
"\n",
"set.seed(42)\n",
"N = 1000\n",
"df = data.frame(X = runif(N), Y = runif(N))\n",
"df$Accept = (df$X**2 + df$Y**2 <=1)\n",
"library(ggplot2)\n",
"ggplot(df, aes(x = X, y = Y, color = Accept)) +\n",
" geom_point(alpha = .2) +\n",
" coord_fixed() +\n",
" theme_bw()\n",
"Il est alors aisé d'obtenir une approximation (pas terrible) de ( \\pi ) en comptant combien de fois, en moyenne, ( X^2 + Y^2 ) est inférieur à 1 :\n",
"4 * mean(df$Accept)"
"ggplot(df, aes(x=X,y=Y,color=Accept)) + geom_point(alpha=.2) + coord_fixed() + theme_bw()\n",
"\n",
"\n",
"Il est alors aisé d’obtenir une approximation (pas terrible) de π\n",
" en comptant combien de fois, en moyenne, X2+Y2\n",
" est inférieur à 1:\n",
"\n",
"4*mean(df$Accept)\n",
"## [1] 3.156"
]
}
],
......
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