2026. június 15., hétfő

Drake-egyenlet szimulációja python programmal

A Fermi-paradoxon lényege az ellentmondás a világegyetem hatalmas méretei (és magas valószínűsége az intelligens élet kialakulására) valamint az erre utaló bizonyítékok hiánya között. Az alábbi Python program egy leegyszerűsített Drake-egyenlet szimulációval szemlélteti ezt, kiszámolva a becsült kommunikációképes civilizációk számát a Tejútrendszerben, változó paraméterek mellett.


import random

def drake_equation(R_star, f_p, n_e, f_l, f_i, f_c, L):
    """
    Kiszámolja a kommunikációképes civilizációk számát a Drake-egyenlet alapján.
    """
    return R_star * f_p * n_e * f_l * f_i * f_c * L

# 1. Optimista becslés (Drake saját becslései egy része)
R_star_opt = 10      # Évente keletkező csillagok száma
f_p_opt = 0.5        # Bolygóval rendelkező csillagok aránya
n_e_opt = 2          # Lakható zónában lévő bolygók száma csillagonként
f_l_opt = 1          # Élet kialakulásának valószínűsége
f_i_opt = 1          # Intelligens élet kialakulásának valószínűsége
f_c_opt = 0.1        # Kommunikációképes civilizációk aránya
L_opt = 10000        # Civilizáció élettartama (években)

optimista_szam = drake_equation(R_star_opt, f_p_opt, n_e_opt, f_l_opt, f_i_opt, f_c_opt, L_opt)
print(f"Becsült civilizációk száma (Optimista): {optimista_szam:.2f}")

# 2. Szimulációs megközelítés: Véletlenszerű paraméterek generálása
print("\n--- Véletlenszerűen generált szimulációk ---")
print("A legtöbb esetben az eredmény 0 vagy nagyon alacsony, ami modellezi a Fermi-paradoxont.")

# Statisztikai adatok gyűjtése
civilizacios_szamok = []
for i in range(5):
    # Véletlen változók a valószínűségekhez [0, 1] tartományban
    R_star_sim = random.uniform(1, 15)
    f_p_sim = random.uniform(0.1, 1.0)
    n_e_sim = random.uniform(0.1, 3.0)
    f_l_sim = random.uniform(0.01, 1.0)
    f_i_sim = random.uniform(0.01, 1.0)
    f_c_sim = random.uniform(0.01, 0.2)
    L_sim = random.randint(100, 100000)
    
    eredmeny = drake_equation(R_star_sim, f_p_sim, n_e_sim, f_l_sim, f_i_sim, f_c_sim, L_sim)
    civilizacios_szamok.append(eredmeny)
    print(f"{i+1}. szimuláció: {eredmeny:.4f} civilizáció")

atl_civilizacio = sum(civilizacios_szamok) / len(civilizacios_szamok)
print(f"\nÁtlagos civilizációs szám a szimulációkban: {atl_civilizacio:.4f}")

# Paradon vizsgálat
if atl_civilizacio < 1:
    print("\nKövetkeztetés: A szimuláció rámutat a Fermi-paradoxonra. Bár a csillagok száma hatalmas, \n"
          "a tényezők összeszorzása gyakran 1-nél kisebb eredményt ad, ami azt jelenti, hogy \n"
          "egyetlen fejlett civilizáció sem létezik rajtunk kívül a galaxisban, vagy a becslési \n"
          "tényezők közül valamelyik drasztikusan alá van becsülve.")

Nincsenek megjegyzések:

Megjegyzés küldése