no commit message

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