Výpočet hodnoty čísla pí
Teď si vyzkoušíme klasický příklad – odhad hodnoty \(\pi\).
Představ si čtverec se stranou délky \(2\), jehož střed leží v počátku souřadnic \((0, 0)\) a jehož rohové body mají souřadnice \((1, 1), (1, -1), (-1, 1), (-1, -1)\). Obsah tohoto čtverce je \(2\times 2 = 4\). Dovnitř čtverce je dokonale vepsána kružnice s poloměrem \(1\) se středem v počátku. Obsah kruhu je \(\pi \times \text{poloměr}^2 = \pi\).
Pro odhad \(\pi\) náhodně generujeme body uvnitř čtverce a sledujeme, jaký podíl z nich leží uvnitř kružnice (\(x^2 + y^2 <= 1\)). Obsah kruhu pak odpovídá \(4\)-násobku tohoto podílu – a to je náš odhad \(\pi\).
Po dokončení tohoto cvičení budeš vědět, jak simulaci využít k numerickým výpočtům.
Toto cvičení je součástí kurzu
Statistické simulace v Pythonu
Pokyny k cvičení
- Podívej se na skutečnou hodnotu \(\pi\) pomocí
np.piv konzoli. Inicializuj proměnnousimsna hodnotu 10000 acircle_pointsna 0. - Uvnitř cyklu
forvygeneruj bod (souřadnice x a y) pomocínp.random.uniform()v rozsahu od -1 do 1 s parametremsize=2. - Ověř, zda bod leží uvnitř jednotkové kružnice podle rovnice \(x^2 + y^2 <= 1\), výsledek ulož do proměnné
within_circlea podle toho aktualizuj hodnotucircle_points. - Vypiš odhad \(\pi\) jako
pi_sim– tedy 4-násobek podílu bodů ležících uvnitř kružnice.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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))