CommencerCommencez gratuitement

Calculer la valeur de pi

Passons maintenant par un exemple classique : estimer la valeur de \(\pi\).

Imaginez un carré de côté \(2\) dont l’origine \((0, 0)\) est le centre, et dont les quatre coins ont pour coordonnées \((1, 1), (1, -1), (-1, 1), (-1, -1)\). L’aire de ce carré est \(2\times 2 = 4\). Imaginez ensuite un cercle de rayon \(1\) centré à l’origine, ajusté parfaitement à l’intérieur de ce carré. L’aire de ce cercle est \(\pi \times \text{rayon}^2 = \pi\).

Pour estimer \(\pi\), on échantillonne aléatoirement plusieurs points dans ce carré et l’on calcule la fraction de points à l’intérieur du cercle (\(x^2 + y^2 <= 1\)). L’aire du cercle est alors égale à \(4\) fois cette fraction, ce qui nous donne notre estimation de \(\pi\).

Après cet exercice, vous saurez utiliser la simulation pour effectuer des calculs.

Cet exercice fait partie du cours

<cours>Simulation statistique en Python</cours>
Voir le cours

Instructions de l’exercice

  • Consultez la vraie valeur de \(\pi\) avec np.pi dans la console. Initialisez sims à 10000 et circle_points à 0.
  • Dans la boucle for, générez un point (coordonnées x et y) avec np.random.uniform() entre -1 et 1, avec size=2.
  • Vérifiez si le point se trouve dans le cercle unité avec l’équation \(x^2 + y^2 <= 1\), affectez le résultat à within_circle, puis incrémentez circle_points en conséquence.
  • Affichez l’estimation de $\pipi_sim` comme 4 fois la fraction de points qui se trouvent dans le cercle.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Initialize sims and circle_points
sims, circle_points = ____, ____ 

for i in range(sims):
    # Generate the two coordinates of a point
    point = ____
    # if the point lies within the unit circle, increment counter
    within_circle = point[0]**2 + point[1]**2 <= 1
    if ____ == True:
        circle_points +=1
        
# Estimate pi as 4 times the avg number of points in the circle.
pi_sim = ____
print("Simulated value of pi = {}".format(pi_sim))
Modifier et exécuter le code