Kom igångKom igång gratis

Beräkna värdet av pi

Nu går vi igenom ett klassiskt exempel – att uppskatta värdet av \(\pi\).

Föreställ dig en kvadrat med sidan \(2\), med origo \((0, 0)\) som centrum och hörnen i koordinaterna \((1, 1), (1, -1), (-1, 1), (-1, -1)\). Kvadratens area är \(2\times 2 = 4\). Inuti kvadraten ryms en cirkel med radien \(1\) och centrum i origo. Cirkelns area är \(\pi \times \text{radien}^2 = \pi\).

För att uppskatta \(\pi\) samplar vi slumpmässigt ett antal punkter i kvadraten och beräknar andelen punkter som hamnar inuti cirkeln (\(x^2 + y^2 <= 1\)). Cirkelns area är då \(4\) gånger denna andel, vilket ger oss vår uppskattning av \(\pi\).

När du är klar med övningen har du en god förståelse för hur simulering kan användas för beräkningar.

Den här övningen är en del av kursen

Statistisk simulering i Python

Visa kurs

Övningsinstruktioner

  • Undersök det sanna värdet av \(\pi\) med hjälp av np.pi i konsolen. Initiera sims till 10000 och circle_points till 0.
  • Generera en punkt (x- och y-koordinater) inuti for-loopen med np.random.uniform() mellan -1 och 1, med size=2.
  • Kontrollera om punkten ligger inom enhetscirkeln med hjälp av uttrycket \(x^2 + y^2 <= 1\), tilldela resultatet till within_circle, och öka circle_points därefter.
  • Skriv ut uppskattningen av \(\pi\) som pi_sim, det vill säga 4 gånger andelen punkter som ligger inuti cirkeln.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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))
Redigera och kör kod