Obliczanie wartości pi
Czas na klasyczny przykład – oszacowanie wartości \(\pi\).
Wyobraź sobie kwadrat o boku \(2\), którego środek znajduje się w początku układu współrzędnych \((0, 0)\), a cztery narożniki mają współrzędne \((1, 1), (1, -1), (-1, 1), (-1, -1)\). Pole tego kwadratu wynosi \(2\times 2 = 4\). Teraz wyobraź sobie okrąg o promieniu \(1\), którego środek jest w początku układu – idealnie wpisany w ten kwadrat. Pole koła wynosi \(\pi \times \text{promień}^2 = \pi\).
Aby oszacować \(\pi\), losujemy wiele punktów wewnątrz kwadratu i obliczamy, jaki ułamek z nich trafia do wnętrza koła (\(x^2 + y^2 <= 1\)). Pole koła to \(4\) razy ten ułamek – i właśnie to daje nam oszacowanie \(\pi\).
Po tym ćwiczeniu będziesz wiedzieć, jak wykorzystać symulację do obliczeń numerycznych.
To ćwiczenie jest częścią kursu
Symulacje statystyczne w Pythonie
Instrukcje do ćwiczenia
- Sprawdź prawdziwą wartość \(\pi\) za pomocą
np.piw konsoli. Zainicjalizujsimswartością 10000, acircle_pointswartością 0. - Wewnątrz pętli
forwygeneruj punkt (współrzędne x i y) za pomocąnp.random.uniform()z przedziału od -1 do 1, ustawiającsize=2. - Sprawdź, czy punkt leży wewnątrz koła jednostkowego, korzystając z równania \(x^2 + y^2 <= 1\), przypisz wynik do
within_circlei odpowiednio zaktualizuj licznikcircle_points. - Wyświetl oszacowanie \(\pi\) jako zmienną
pi_sim– równą 4 razy ułamkowi punktów leżących wewnątrz koła.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))