From a776731bfee7737509bcf4a0389f2f2923f76890 Mon Sep 17 00:00:00 2001 From: 0df518f24345b8121aac3d63118064f8 <0df518f24345b8121aac3d63118064f8@app-learninglab.inria.fr> Date: Tue, 31 Mar 2020 16:33:34 +0000 Subject: [PATCH] Update toy_document_fr.Rmd --- module2/exo1/toy_document_fr.Rmd | 72 -------------------------------- 1 file changed, 72 deletions(-) diff --git a/module2/exo1/toy_document_fr.Rmd b/module2/exo1/toy_document_fr.Rmd index f49e3a8..e69de29 100644 --- a/module2/exo1/toy_document_fr.Rmd +++ b/module2/exo1/toy_document_fr.Rmd @@ -1,72 +0,0 @@ -#+TITLE: À propos du calcul de $\pi$ #+TITLE: Votre titre -#+LANGUAGE: fr #+AUTHOR: Votre nom -#+DATE: La date du jour -#+HTML_HEAD: #+LANGUAGE: fr -#+HTML_HEAD: # #+PROPERTY: header-args :eval never-export -#+HTML_HEAD: -#+HTML_HEAD: #+HTML_HEAD: -#+HTML_HEAD: #+HTML_HEAD: -#+HTML_HEAD: #+HTML_HEAD: -#+HTML_HEAD: -#+PROPERTY: header-args :session :exports both #+HTML_HEAD: -#+HTML_HEAD: -* En demandant à la lib maths -Mon ordinateur m'indique que $\pi$ vaut /approximativement/: * Quelques explications -#+begin_src python :results value :session *python* :exports both Ceci est un document org-mode avec quelques exemples de code -from math import * python. Une fois ouvert dans emacs, ce document peut aisément être -pi exporté au format HTML, PDF, et Office. Pour plus de détails sur -#+end_src org-mode vous pouvez consulter https://orgmode.org/guide/. -#+RESULTS: Lorsque vous utiliserez le raccourci =C-c C-e h o=, ce document sera -: 3.141592653589793 compilé en html. Tout le code contenu sera ré-exécuté, les résultats -récupérés et inclus dans un document final. Si vous ne souhaitez pas -* En utilisant la méthode des aiguilles de Buffon ré-exécuter tout le code à chaque fois, il vous suffit de supprimer -Mais calculé avec la *méthode* des [[https://fr.wikipedia.org/wiki/Aiguille_de_Buffon][aiguilles de Buffon]], on obtiendrait le # et l'espace qui sont devant le ~#+PROPERTY:~ au début de ce -comme *approximation* : document. -#+begin_src python :results value :session *python* :exports both Comme nous vous l'avons montré dans la vidéo, on inclue du code -import numpy as np python de la façon suivante (et on l'exécute en faisant ~C-c C-c~): -np.random.seed(seed=42) -N = 10000 #+begin_src python :results output :exports both -x = np.random.uniform(size=N, low=0, high=1) print("Hello world!") -theta = np.random.uniform(size=N, low=0, high=pi/2) #+end_src -2/(sum((x+np.sin(theta))>1)/N) -#+end_src #+RESULTS: -: Hello world! -#+RESULTS: -: 3.128911138923655 Voici la même chose, mais avec une session python, donc une -persistance d'un bloc à l'autre (et on l'exécute toujours en faisant -* Avec un argument "fréquentiel" de surface ~C-c C-c~). -Sinon, une méthode plus simple à comprendre et ne faisant pas #+begin_src python :results output :session :exports both -intervenir d'appel à la fonction sinus se base sur le fait que si $X\sim import numpy -U(0,1)$ et $Y\sim U(0,1)$ alors $P[X^2+Y^2\leq 1] = \pi/4$ (voir [[https://fr.wikipedia.org/wiki/M%25C3%25A9thode_de_Monte-Carlo#D%25C3%25A9termination_de_la_valeur_de_%25CF%2580][méthode de x=numpy.linspace(-15,15) -Monte Carlo sur Wikipedia]]). Le code suivant illustre ce fait : print(x) -#+end_src -#+begin_src python :results output file :var matplot_lib_filename="figure_pi_mc2.png" :exports both :session *python* -import matplotlib.pyplot as plt #+RESULTS: -#+begin_example -np.random.seed(seed=42) [-15. -14.3877551 -13.7755102 -13.16326531 -12.55102041 -N = 1000 -11.93877551 -11.32653061 -10.71428571 -10.10204082 -9.48979592 -x = np.random.uniform(size=N, low=0, high=1) -8.87755102 -8.26530612 -7.65306122 -7.04081633 -6.42857143 -y = np.random.uniform(size=N, low=0, high=1) -5.81632653 -5.20408163 -4.59183673 -3.97959184 -3.36734694 - -2.75510204 -2.14285714 -1.53061224 -0.91836735 -0.30612245 -accept = (x*x+y*y) <= 1 0.30612245 0.91836735 1.53061224 2.14285714 2.75510204 -reject = np.logical_not(accept) 3.36734694 3.97959184 4.59183673 5.20408163 5.81632653 - 6.42857143 7.04081633 7.65306122 8.26530612 8.87755102 -fig, ax = plt.subplots(1) 9.48979592 10.10204082 10.71428571 11.32653061 11.93877551 -ax.scatter(x[accept], y[accept], c='b', alpha=0.2, edgecolor=None) 12.55102041 13.16326531 13.7755102 14.3877551 15. ] -ax.scatter(x[reject], y[reject], c='r', alpha=0.2, edgecolor=None) #+end_example -ax.set_aspect('equal') -Et enfin, voici un exemple de sortie graphique: -plt.savefig(matplot_lib_filename) #+begin_src python :results output file :session :var matplot_lib_filename="./cosxsx.png" :exports results -print(matplot_lib_filename) import matplotlib.pyplot as plt -#+end_src -plt.figure(figsize=(10,5)) -#+RESULTS: plt.plot(x,numpy.cos(x)/x) -[[file:figure_pi_mc2.png]] plt.tight_layout() -Il est alors aisé d'obtenir une approximation (pas terrible) de $\pi$ en plt.savefig(matplot_lib_filename) -comptant combien de fois, en moyenne, $X^2 + Y^2$ est inférieur à 1 : print(matplot_lib_filename) -#+end_src -#+begin_src python :results output :session *python* :exports both -4*np.mean(accept) #+RESULTS: -#+end_src [[file:./cosxsx.png]] -#+RESULTS: Vous remarquerez le paramètre ~:exports results~ qui indique que le code -: 3.112 \ No newline at end of file -- 2.18.1