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
Övningsinstruktioner
- Undersök det sanna värdet av \(\pi\) med hjälp av
np.pii konsolen. Initierasimstill 10000 ochcircle_pointstill 0. - Generera en punkt (x- och y-koordinater) inuti
for-loopen mednp.random.uniform()mellan -1 och 1, medsize=2. - Kontrollera om punkten ligger inom enhetscirkeln med hjälp av uttrycket \(x^2 + y^2 <= 1\), tilldela resultatet till
within_circle, och ökacircle_pointsdä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))