From 122fcafb0f974c961fa2466d603e1d8992645c29 Mon Sep 17 00:00:00 2001 From: Alain Leraut Date: Mon, 20 Apr 2020 18:39:11 +0200 Subject: [PATCH] =?UTF-8?q?HTML=20premi=C3=A8re=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exo1/toy_document_orgmode_python_fr.html | 363 ++++++++++++++++++ 1 file changed, 363 insertions(+) create mode 100644 module2/exo1/toy_document_orgmode_python_fr.html diff --git a/module2/exo1/toy_document_orgmode_python_fr.html b/module2/exo1/toy_document_orgmode_python_fr.html new file mode 100644 index 0000000..5dc55fc --- /dev/null +++ b/module2/exo1/toy_document_orgmode_python_fr.html @@ -0,0 +1,363 @@ + + + + + + + +À propos du calcul de π + + + + + + + + + + + + +
+

À propos du calcul de π

+ + + +
+

1 En demandant à la lib maths

+
+

+Mon ordinateur m'indique que π vaut approximativement: +

+
+
from math import *
+print(pi)
+
+
+ +
+3.141592653589793
+
+
+
+
+ +
+

2 En utilisant la méthode des aiguilles de Buffon

+
+

+Mais calculé avec la méthode des aiguilles de Buffon, on obtiendrait +comme approximation : +

+ +
+
import numpy as np
+np.random.seed(seed=42)
+N = 10000
+x = np.random.uniform(size=N, low=0, high=1)
+theta = np.random.uniform(size=N, low=0, high=pi/2)
+valeur = 2/(sum((x+np.sin(theta))>1)/N)
+print(valeur)
+
+
+ +
+3.128911138923655
+
+
+
+
+
+

3 Avec un argument "fréquentiel" de surface

+
+

+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) et Y∼U(0,1) alors P[X2+Y2≤1]=π/4 (voir méthode de Monte +Carlo sur Wikipedia). Le code suivant illustre ce fait : +

+ +
+
import matplotlib.pyplot as plt
+np.random.seed(seed=42)
+N = 1000
+x = np.random.uniform(size=N, low=0, high=1)
+y = np.random.uniform(size=N, low=0, high=1)
+
+accept = (x*x+y*y) <= 1
+reject = np.logical_not(accept)
+
+fig, ax = plt.subplots(1)
+ax.scatter(x[accept], y[accept], c='b', alpha=0.2, edgecolor=None)
+ax.scatter(x[reject], y[reject], c='r', alpha=0.2, edgecolor=None)
+ax.set_aspect('equal')
+
+plt.savefig(matplot_lib_filename)
+print(matplot_lib_filename)
+
+
+ + +
+

valeurpip.png +

+
+ + +

+Il est alors aisé d'obtenir une approximation (pas terrible) de π en +comptant combien de fois, en moyenne, X2+Y2 est inférieur à 1 : +

+ +
+
print('{:1.13f}'.format(4*np.mean(accept)))
+
+
+ +
+3.1120000000000
+
+
+ +

+Auteur: Konrad Hinsen +

+ +

+Created: 2019-03-28 Thu 11:06 +

+
+
+
+
+

Auteur: Leraut Alain

+

Created: 2020-04-20 lun. 18:01

+

Validate

+
+ + -- 2.18.1