Aan de slagGa gratis aan de slag

De waarde van pi berekenen

We gaan nu aan de slag met een klassiek voorbeeld: de waarde van \(\pi\) schatten.

Stel je een vierkant voor met zijde \(2\), met de oorsprong \((0, 0)\) in het midden en de vier hoeken op \((1, 1), (1, -1), (-1, 1), (-1, -1)\). De oppervlakte van dit vierkant is \(2\times 2 = 4\). Stel je nu een cirkel met straal \(1\) voor, met het middelpunt in de oorsprong, die precies in dit vierkant past. De oppervlakte van de cirkel is dan \(\pi \times \text{straal}^2 = \pi\).

Om \(\pi\) te schatten, trekken we willekeurig meerdere punten in dit vierkant en bepalen we het aandeel punten binnen de cirkel (\(x^2 + y^2 <= 1\)). De oppervlakte van de cirkel is dan \(4\) keer dit aandeel, wat onze schatting van \(\pi\) oplevert.

Na deze oefening heb je door hoe je simulatie kunt gebruiken voor berekeningen.

Deze oefening maakt deel uit van de cursus

Statisticale simulatie in Python

Cursus bekijken

Oefeninstructies

  • Bekijk de werkelijke waarde van \(\pi\) met np.pi in de console. Stel sims in op 10000 en circle_points op 0.
  • Genereer binnen de for-lus een punt (x- en y-coördinaat) met np.random.uniform() tussen -1 en 1, met size=2.
  • Controleer of het punt binnen de eenheidscirkel ligt met de vergelijking \(x^2 + y^2 <= 1\), ken dit toe aan within_circle, en verhoog circle_points overeenkomstig.
  • Print de schatting van $\pipi_sim` als 4 keer het aandeel punten dat binnen de cirkel ligt.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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))
Code bewerken en uitvoeren