Kísérlet PI értékének meghatározására
----------
import random
import matplotlib.pyplot as plt
def monte_carlo_pi(osszes_pont):
belso_pont = 0
x_kint, y_kint = [], []
x_bent, y_bent = [], []
for _ in range(osszes_pont):
# Véletlen koordináták a [-1, 1] intervallumon
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)
# Pitagorasz-tétel: x^2 + y^2 <= r^2 (esetünkben 1^2)
if x**2 + y**2 <= 1.0:
belso_pont += 1
x_bent.append(x)
y_bent.append(y)
else:
x_kint.append(x)
y_kint.append(y)
# Pi becslése a képlet alapján
pi_becsles = 4 * belso_pont / osszes_pont
return pi_becsles, x_kint, y_kint, x_bent, y_bent
# A kísérlet paraméterei
kiserletek_szama = 5000
# Futtatás
becsult_pi, x_out, y_out, x_in, y_in = monte_carlo_pi(kiserletek_szama)
print(f"Generált pontok száma: {kiserletek_szama}")
print(f"A Pi becsült értéke: {becsult_pi}")
print(f"Eltérés a valódi értéktől: {abs(becsult_pi - 3.14159265359):.5f}")
# Grafikon megjelenítése a kísérlet vizualizálásához
plt.figure(figsize=(6, 6))
plt.scatter(x_out, y_out, color='red', s=1, label='Négyzeten belül, körön kívül')
plt.scatter(x_in, y_in, color='blue', s=1, label='Körön belül')
plt.title(f"Monte Carlo Pi szimuláció (Becsült Pi: {becsult_pi})")
plt.xlabel("X koordináta")
plt.ylabel("Y koordináta")
plt.legend(loc='lower right')
plt.axis('equal')
plt.show()
----------------
Nincsenek megjegyzések:
Megjegyzés küldése