2026. június 21., vasárnap

Tudományos kísérlet PI becslésére pythonban

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()
----------------
--------------------
Generált pontok száma: 5000
A Pi becsült értéke: 3.168
Eltérés a valódi értéktől: 0.02479

Nincsenek megjegyzések:

Megjegyzés küldése