From f4cc151d92784512b325f379bb50c6e749062be8 Mon Sep 17 00:00:00 2001 From: b9bf6d21d8eca4479a89acdbe13a45c9 Date: Sat, 1 Nov 2025 14:06:54 +0000 Subject: [PATCH] no commit message --- module2/exo1/toy_notebook_fr.ipynb | 57 ++++++++++++++++-------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/module2/exo1/toy_notebook_fr.ipynb b/module2/exo1/toy_notebook_fr.ipynb index aa04c4c..274e138 100644 --- a/module2/exo1/toy_notebook_fr.ipynb +++ b/module2/exo1/toy_notebook_fr.ipynb @@ -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" ] } ], -- 2.18.1