La méthode de Monte-Carlo pour estimer une surface : travail sur les lunules d'Hyppocrate
from math import sqrt
from matplotlib import pyplot as plt # bibliothèque pour les graphiques
from random import uniform # bibliothèque pour les nombres au hasard
from math import sqrt # bibliothèque pour les fonctions mathématiques
def est_dansC1(x,y):
"""retourne True si le point est dans le cercle de diamètre [AC]"""
if x**2 + y**2 - 1 < 0:
return True
else:
return False
def est_dansC0(x,y):
"""retourne True si le point est dans le cercle de centre O"""
...
n = 50000
x_rouge, y_rouge = [],[] # création de listes de valeurs
x_bleu, y_bleu = [],[]
eff_rouge1 = 0
for _ in range(n):
x = uniform(-1,1)
y = uniform(0,1)
if ...
x_rouge.append(x)
y_rouge.append(y)
eff_rouge1 += 1 # eff_rouge1 = eff_rouge1 + 1
else:
...
plt.plot(x_rouge, y_rouge,'r.')
plt.plot(x_bleu, y_bleu,'b.')
plt.show()
def est_dansC2(x,y):
"""retourne True si le point est dans le cercle de diamètre [BC]"""
...
def est_dansC0(x, y):
# l'équation de c0 n'est pas la même dans ce repère !
# Python redéfini la fonction sans avertissement...
...
# n est déjà défini, mais il faut réinitiliser les listes
x_rouge ...
x_bleu ...
eff_rouge2 = 0
for _ in range(n):
...
plt.plot(x_rouge, y_rouge,'r.')
plt.plot(x_bleu, y_bleu,'b.')
plt.show()
# estimation de la somme des aires des lunules
2019 est un nombre heureux !
$2019 \Rightarrow 2^2 + 0^2 + 1^2 + 9^2 = 86 \Rightarrow 8^2 + 6^2 = 100 \Rightarrow 1^2 + 0^2 + 0^2 = 1$