2026. szeptember 10., csütörtök

Python szimuláció Runge-Kutta 4. rendű numerikus integrálással modellezve egy Earth-grazing.

M-típusú Psyche-hez hasonló vas nikkel aszteroidról egy teljes körű Python szimuláció, amely Newton gravitációs törvényét használva (Runge-Kutta 4. rendű numerikus integrálással) modellezve „Earth-grazing”.
----------
import numpy as np
import matplotlib.pyplot as plt

# --- FIZIKAI ÉS PLANETÁRIS KONSTANSOK ---
G = 6.67430e-11          # Gravitációs állandó (m^3 kg^-1 s^-2)
M_EARTH = 5.972e24       # Föld tömege (kg)
R_EARTH = 6371000        # Föld sugara (m)

# --- LÉGKÖRI PARAMÉTEREK ---
RHO_0 = 1.225            # Tengerszinti levegősűrűség (kg/m^3)
H_SCALE = 8500           # Skálamagasság (m)

# --- VAS-ASZTEROIDA PARAMÉTEREK (1 km átmérő) ---
INITIAL_DIAMETER = 1000          
RADIUS_ASTEROID = INITIAL_DIAMETER / 2
DENSITY_ASTEROID = 7800  # Vas/Nikkel sűrűség (kg/m^3)
C_D = 1.2                # Légellenállási tényező
C_H = 0.01               # Hőátadási hatásfok
Q_ABLATION = 8.0e6       # Ablációs hő vashoz (J/kg)

initial_mass = (4/3) * np.pi * (RADIUS_ASTEROID**3) * DENSITY_ASTEROID 

# --- KEZDETI FELTÉTELEK (13 km-es perigeum) ---
h_perigee = 13000        # 13 km (m)
r_perigee = R_EARTH + h_perigee

v_escape = np.sqrt(2 * G * M_EARTH / r_perigee)
v_perigee = v_escape + 4000  # Sebesség a perigeumban (~15.2 km/s)

# Pálya indítása a légkör széléről (100 km-es magasság)
h_start = 100000        
r_start = R_EARTH + h_start

E = 0.5 * v_perigee**2 - (G * M_EARTH / r_perigee)
L = r_perigee * v_perigee

p = L**2 / (G * M_EARTH)
e = np.sqrt(1 + (2 * E * L**2) / (G * M_EARTH)**2)
cos_theta = (p / r_start - 1) / e
theta_start = -np.arccos(cos_theta)

x0 = r_start * np.cos(theta_start)
y0 = r_start * np.sin(theta_start)

v_radial = (G * M_EARTH * e * np.sin(theta_start)) / L
v_tangential = L / r_start

vx0 = v_radial * np.cos(theta_start) - v_tangential * np.sin(theta_start)
vy0 = v_radial * np.sin(theta_start) + v_tangential * np.cos(theta_start)

state_0 = np.array([x0, y0, vx0, vy0, initial_mass])

# Kezdeti belépési sebességvektor szöge (radiánban)
initial_angle = np.arctan2(vy0, vx0)

# --- DIFFERENCIÁLEGYENLET ---
def physics_with_ablation_derivs(t, state):
    x, y, vx, vy, m = state
    r = np.sqrt(x**2 + y**2)
    h = r - R_EARTH
    
    if m <= 0 or h < 0:
        return np.zeros(5)
        
    r_ast = (3 * m / (4 * np.pi * DENSITY_ASTEROID))**(1/3)
    cross_section = np.pi * (r_ast**2)
    
    ax_g = -G * M_EARTH * x / r**3
    ay_g = -G * M_EARTH * y / r**3
    
    rho = RHO_0 * np.exp(-h / H_SCALE)
    v_mag = np.sqrt(vx**2 + vy**2)
    
    drag_force = 0.5 * rho * v_mag**2 * C_D * cross_section
    a_drag = drag_force / m
    
    ax_d = -a_drag * (vx / v_mag) if v_mag > 0 else 0
    ay_d = -a_drag * (vy / v_mag) if v_mag > 0 else 0
    
    Q_in = 0.5 * rho * (v_mag**3) * C_H * cross_section
    dm_dt = -Q_in / Q_ABLATION
    
    return np.array([vx, vy, ax_g + ax_d, ay_g + ay_d, dm_dt])

def rk4_step(f, t, state, dt):
    k1 = f(t, state)
    k2 = f(t + dt/2, state + k1 * dt/2)
    k3 = f(t + dt/2, state + k2 * dt/2)
    k4 = f(t + dt, state + k3 * dt)
    return state + (dt / 6) * (k1 + 2*k2 + 2*k3 + k4)

# --- SZIMULÁCIÓ FUTTATÁSA ---
dt = 0.05  
current_state = state_0.copy()
trajectory = [current_state]

for _ in range(6000):
    current_state = rk4_step(physics_with_ablation_derivs, 0, current_state, dt)
    trajectory.append(current_state)
    
    r_curr = np.sqrt(current_state[0]**2 + current_state[1]**2)
    if r_curr < R_EARTH or current_state[4] <= 0:
        break
    if r_curr > r_start and len(trajectory) > 500:
        break

trajectory = np.array(trajectory)
x_coords = trajectory[:, 0] / 1000
y_coords = trajectory[:, 1] / 1000
masses = trajectory[:, 4]
altitudes = (np.sqrt(trajectory[:, 0]**2 + trajectory[:, 1]**2) - R_EARTH) / 1000

# --- PÁLYAELHAJLÁS KISZÁMÍTÁSA ---
v_xf, v_yf = trajectory[-1, 2], trajectory[-1, 3]
final_angle = np.arctan2(v_yf, v_xf)

deflection_rad = np.abs(final_angle - initial_angle)
deflection_deg = np.degrees(deflection_rad) % 360
if deflection_deg > 180:
    deflection_deg = 360 - deflection_deg

mass_lost_tons = (initial_mass - masses[-1]) / 1000
mass_lost_pct = (mass_lost_tons * 1000 / initial_mass) * 100

# --- VIZUALIZÁCIÓ KETTŐS DIAGRAMMAL ---
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 7))

# 1. Pályagrafikon ritkított irányvektorokkal
ax1.plot(x_coords, y_coords, color='darkorange', linewidth=2.5, label='Vas-aszteroida pálya')
ax1.add_patch(plt.Circle((0, 0), R_EARTH / 1000, color='royalblue', alpha=0.9, label='Föld felszín'))

# Sebességvektorok kirajzolása (minden 150. pontnál az átláthatóságért)
skip = 150
ax1.quiver(x_coords[::skip], y_coords[::skip], 
          trajectory[::skip, 2], trajectory[::skip, 3], 
          color='red', scale=2e5, width=0.005, label='Irányvektorok')

ax1.set_aspect('equal', 'box')
ax1.set_xlabel('X pozíció (km)')
ax1.set_ylabel('Y pozíció (km)')
ax1.set_title('Pályaelhajlás (Gravitációs parittya + Légköri fékezés)')
ax1.grid(True, alpha=0.3)
ax1.set_xlim(-150, 150)
ax1.set_ylim(R_EARTH/1000 - 20, R_EARTH/1000 + 120)
ax1.legend(loc='upper right')

# 2. Tömegveszteség grafikona
ax2.plot(altitudes, masses / 1e9, color='silver', linewidth=2.5, label='Vas tömeg')
ax2.set_xlabel('Magasság a felszín felett (km)')
ax2.set_ylabel('Aszteroida tömege (Millió tonna)')
ax2.set_title('Vas-aszteroida ablációja')
ax2.grid(True, linestyle=':')
ax2.invert_xaxis()
ax2.legend()

plt.tight_layout()

# Eredmények kiírása a konzolra
print(f"--- VAS-ASZTEROIDA EREDMÉNYEK ---")
print(f"Kezdeti tömeg: {initial_mass/1e9:.2f} millió tonna")
print(f"Elpárolgott vasmennyiség: {mass_lost_tons:.2f} tonna ({mass_lost_pct:.4f}%)")
print(f"Pályaelhajlás szöge (Deflection Angle): {deflection_deg:.2f}°")

plt.show()
-------------
--- VAS-ASZTEROIDA EREDMÉNYEK ---
Kezdeti tömeg: 4084.07 millió tonna
Elpárolgott vasmennyiség: 20217745.17 tonna (0.4950%)
Pályaelhajlás szöge (Deflection Angle): 6.12°



Ppython nyelven szimulált earth-grazing, ami 2km átmérőjü szikla 300 km távolságú föld megközelités esetén



------------
import numpy as np
import matplotlib.pyplot as plt

# --- FIZIKAI ÉS PLANETÁRIS KONSTANSOK ---
G = 6.67430e-11          # Gravitációs állandó (m^3 kg^-1 s^-2)
M_EARTH = 5.972e24       # Föld tömege (kg)
R_EARTH = 6371000        # Föld sugara (m)

# --- LÉGKÖRI MODELL PARAMÉTEREK ---
RHO_0 = 1.225            # Tengerszinti levegősűrűség (kg/m^3)
H_SCALE = 8500           # Skálamagasság (m) - kb. 8.5 km-enként feleződik a sűrűség

# --- ASZTEROIDA PARAMÉTEREK (2 km átmérő) ---
DIAMETER = 2000          # Átmérő (m)
RADIUS_ASTEROID = DIAMETER / 2
CROSS_SECTION = np.pi * (RADIUS_ASTEROID**2) # Homlokfelület (m^2)
DENSITY_ASTEROID = 3000  # Átlagos kőzet-aszteroida sűrűség (kg/m^3)
MASS_ASTEROID = (4/3) * np.pi * (RADIUS_ASTEROID**3) * DENSITY_ASTEROID # Tömeg (kg)
C_D = 1.2                # Légellenállási alaktényező (gömb/szabálytalan szikla közelítése)

# --- KEZDETI FELTÉTELEK ---
h_perigee = 300000       # 300 km magasság a perigeumban (m)
r_perigee = R_EARTH + h_perigee

# Sebesség meghatározása (hiperbolikus pálya, ~14 km/s a perigeumban)
v_escape = np.sqrt(2 * G * M_EARTH / r_perigee)
v_perigee = v_escape + 3000  

# Mivel a légellenállás nem konzervatív erő (veszteséges), a pályát eltoljuk, 
# és egy távoli pontból indítjuk a légkör felett (pl. 2500 km magasan).
h_start = 2500000        # 2500 km kezdőmagasság
r_start = R_EARTH + h_start

# Hiperbolikus pályaenergia (E) és impulzusmomentum (L) kiszámítása a kívánt perigeumhoz
E = 0.5 * v_perigee**2 - (G * M_EARTH / r_perigee)
L = r_perigee * v_perigee

# Kezdőpozíció szöge a hiperbola egyenletéből
p = L**2 / (G * M_EARTH)
e = np.sqrt(1 + (2 * E * L**2) / (G * M_EARTH)**2)
cos_theta = (p / r_start - 1) / e
theta_start = -np.arccos(cos_theta) # negatív szög, mert közeledik

# Kezdő koordináták és sebességek polár koordinátákból forgatva
x0 = r_start * np.cos(theta_start)
y0 = r_start * np.sin(theta_start)

v_radial = (G * M_EARTH * e * np.sin(theta_start)) / L
v_tangential = L / r_start

vx0 = v_radial * np.cos(theta_start) - v_tangential * np.sin(theta_start)
vy0 = v_radial * np.sin(theta_start) + v_tangential * np.cos(theta_start)

state_0 = np.array([x0, y0, vx0, vy0])

# --- DIFFERENCIÁLEGYENLET LÉGELLENÁLLÁSSAL ---
def gravity_and_drag_derivs(t, state):
    x, y, vx, vy = state
    r = np.sqrt(x**2 + y**2)
    h = r - R_EARTH
    
    # 1. Gravitációs gyorsulás
    ax_g = -G * M_EARTH * x / r**3
    ay_g = -G * M_EARTH * y / r**3
    
    # 2. Légköri sűrűség kiszámítása (ha h < 0, a szikla becsapódott)
    if h > 0:
        rho = RHO_0 * np.exp(-h / H_SCALE)
    else:
        rho = 0
        
    # 3. Légellenállási erő (Drag) és gyorsulás
    v_mag = np.sqrt(vx**2 + vy**2)
    drag_force = 0.5 * rho * v_mag**2 * C_D * CROSS_SECTION
    a_drag = drag_force / MASS_ASTEROID
    
    # A légellenállás a sebességvektorral ellentétes irányú
    ax_d = -a_drag * (vx / v_mag) if v_mag > 0 else 0
    ay_d = -a_drag * (vy / v_mag) if v_mag > 0 else 0
    
    return np.array([vx, vy, ax_g + ax_d, ay_g + ay_d])

# RK4 Integrátor lépés
def rk4_step(f, t, state, dt):
    k1 = f(t, state)
    k2 = f(t + dt/2, state + k1 * dt/2)
    k3 = f(t + dt/2, state + k2 * dt/2)
    k4 = f(t + dt, state + k3 * dt)
    return state + (dt / 6) * (k1 + 2*k2 + 2*k3 + k4)

# --- SZIMULÁCIÓ FUTTATÁSA ---
dt = 0.5  # Időlépés másodpercben
current_state = state_0.copy()
trajectory = [current_state]

max_steps = 16000
for _ in range(max_steps):
    current_state = rk4_step(gravity_and_drag_derivs, 0, current_state, dt)
    trajectory.append(current_state)
    
    # Ellenőrzések az aktuális lépésben
    r_curr = np.sqrt(current_state[0]**2 + current_state[1]**2)
    if r_curr < R_EARTH:
        print("A szikla becsapódott a Földbe!")
        break
    if r_curr > r_start and len(trajectory) > 1000:
        break

trajectory = np.array(trajectory)
x_coords = trajectory[:, 0] / 1000
y_coords = trajectory[:, 1] / 1000

# Energiaveszteség kiszámítása
v_start_mag = np.sqrt(vx0**2 + vy0**2)
v_end_mag = np.sqrt(trajectory[-1, 2]**2 + trajectory[-1, 3]**2)
energy_loss_pct = (1 - (v_end_mag**2 / v_start_mag**2)) * 100

# --- VIZUALIZÁCIÓ ---
fig, ax = plt.subplots(figsize=(9, 9))

# Föld és légkör rajzolása
earth_circle = plt.Circle((0, 0), R_EARTH / 1000, color='royalblue', label='Föld felszín')
ax.add_patch(earth_circle)

# Légköri rétegek szemléltetése
ax.add_patch(plt.Circle((0, 0), (R_EARTH + 100000) / 1000, color='deepskyblue', alpha=0.15, label='Sűrűbb légkör (<100 km)'))
ax.add_patch(plt.Circle((0, 0), (R_EARTH + 300000) / 1000, color='skyblue', alpha=0.08, label='Ritka exoszféra (<300 km)'))

# Pálya kirajzolása
ax.plot(x_coords, y_coords, color='orangered', linewidth=2, label='Aszteroida pálya (RK4 + Drag)')

# Formázás
ax.set_aspect('equal', 'box')
ax.set_xlabel('X pozíció (km)')
ax.set_ylabel('Y pozíció (km)')
ax.set_title('Earth-grazing szimuláció légellenállással (Drag Model)')
ax.grid(True, linestyle=':', alpha=0.5)
ax.legend(loc='upper right')

# Fókuszálás a Földközelségre
ax.set_xlim(-8000, 8000)
ax.set_ylim(-4000, 8000)

# Információs panel
info_text = (
    f"Szikla átmérő: {DIAMETER/1000:.1f} km\n"
    f"Szikla tömeg: {MASS_ASTEROID:.2e} kg\n"
    f"Minimális magasság: {h_perigee/1000:.0f} km\n"
    f"Sebességveszteség: {v_start_mag - v_end_mag:.6f} m/s\n"
    f"Kinetikus energia csökkenés: {energy_loss_pct:.8f}%"
)
plt.gca().text(0.03, 0.03, info_text, transform=plt.gca().transAxes,
               bbox=dict(facecolor='white', alpha=0.85, edgecolor='gray'))

plt.show()
-----------


-------------

---------

Szimulált aszteroida veszély pythonban

Mit tud ez a szimuláció?Kepler III. törvénye: A kód nem egy fix átlagos keringési idővel számol, hanem minden egyes generált aszteroidának egyedileg számítja ki a keringési idejét a nagytengelye alapján (\(T = a^{1.5}\)). Egy Naphoz közelebbi aszteroida gyakrabban tesz meg egy kört, így sűrűbben látogatja meg a belső zónát. ....................


import math
import random


def aszteroida_szimulacio(mintameret=10000):
    print(
        f"--- 1 km-es objektumok pályaszimulációja ({mintameret} aszteroida) ---"
    )

    # 1. Globális csillagászati paraméterek és konstansok
    OSSZES_1KM_NEO = 920  # A valóságban létező összes ~1 km-es NEO becsült száma
    AU_TO_KM = 149597870.7  # 1 Csillagászati Egység kilométerben
    KRITIKUS_TAV_AU = 150000000 / AU_TO_KM  # A 150 millió km CsE-ben (~1.0027 CsE)

    sikeres_napkozelitesek = 0
    osszes_keringesi_frekvencia = 0

    # 2. Monte Carlo szimuláció indítása
    for _ in range(mintameret):
        # Földközeli aszteroidákra jellemző pályaelemek statisztikai generálása:
        # A nagytengely (a) jellemzően 0.5 és 3.0 CsE közé esik a belső naprendszerben
        a = random.uniform(0.5, 3.0)

        # Az excentricitás (e) határozza meg a pálya nyújtottságát (0 = kör, 1 = parabola)
        # A NEO-k esetén a nyújtottabb pályák a gyakoribbak
        e = random.betavariate(2, 2)  # Reális eloszlást biztosító béta-eloszlás

        # Kiszámoljuk a napközelpontot (q): a legközelebbi pont a Naphoz a keringés során
        # Képlete: q = a * (1 - e)
        q = a * (1 - e)

        # Ellenőrizzük, hogy ez a pont közelebb van-e, mint a kritikus távolság
        if q <= KRITIKUS_TAV_AU:
            sikeres_napkozelitesek += 1

            # Kepler III. törvénye alapján kiszámoljuk a keringési időt években: T = a^(1.5)
            keringesi_ido_ev = math.pow(a, 1.5)

            # Az éves frekvencia (hányszor ér napközelbe 1 év alatt): f = 1 / T
            eves_frekvencia = 1.0 / keringesi_ido_ev
            osszes_keringesi_frekvencia += eves_frekvencia

    # 3. Statisztikai kiértékelés és skálázás a valós populációra
    megkozelitesi_arany = sikeres_napkozelitesek / mintameret
    atlagos_eves_frekvencia = (
        osszes_keringesi_frekvencia / sikeres_napkozelitesek
        if sikeres_napkozelitesek > 0
        else 0
    )

    # Felskálázzuk a mintát a teljes 1 km-es aszteroida-populációra (920 darabra)
    valos_belso_objektumok = OSSZES_1KM_NEO * megkozelitesi_arany
    valos_eves_fluxus = valos_belso_objektumok * atlagos_eves_frekvencia

    # Eredmények kiírása
    print(
        f"A szimulált aszteroidák {megkozelitesi_arany*100:.2f}%-a keresztezi a 150 millió km-es zónát."
    )
    print(
        f"Ezek átlagos keringési ideje a generált pályák alapján: {1/atlagos_eves_frekvencia:.2f} év."
    )
    print("-" * 65)
    print(
        f"A valóságra vetítve a ~920 db 1 km-es objektumból kb. {int(valos_belso_objektumok)} db pályája megfelelő."
    )
    print(
        f"EREDMÉNY: A szimuláció szerint ÉVENTE kb. {round(valos_eves_fluxus)} db alkalommal történik megközelítés."
    )


if __name__ == "__main__":
    # Fix seed, hogy a véletlenszámok ellenére minden futásnál reprodukálható legyen az eredmény
    random.seed(42)
    aszteroida_szimulacio(mintameret=10000)

.....................
1 km-es objektumok pályaszimulációja (10000 aszteroida) ---
A szimulált aszteroidák 63.97%-a keresztezi a 150 millió km-es zónát.
Ezek átlagos keringési ideje a generált pályák alapján: 1.14 év.
-----------------------------------------------------------------
A valóságra vetítve a ~920 db 1 km-es objektumból kb. 588 db pályája megfelelő.
EREDMÉNY: A szimuláció szerint ÉVENTE kb. 516 db alkalommal történik megközelítés. Erdó ennyi potenciális veszélyforrás.

Futtatás; https://colab.research.google.com/ 

2026. szeptember 9., szerda

A tejútrendszer és a Drake egyenlet pythonban

Pythonban a matematikai modellek és valószínűségszámítások alapján a Drake egyenlettel megbecsülve;

--------------
def drake_egyenlet_pesszimista():
    print("--- Drake-egyenlet Számítás  --- \n")

    # R* : Csillagkeletkezés átlagos üteme a Tejútrendszerben (évente hány új csillag születik)
    # Pesszimista érték: kb. 1 csillag/év
    R_star = 2.0

    # fp : A bolygórendszerrel rendelkező csillagok aránya
    # Pesszimista érték: a csillagok mindössze 20%-a rendelkezik bolygókkal
    fp = 0.90

    # ne : Az élet számára alkalmas bolygók átlagos száma egy bolygórendszerben
    # Pesszimista érték: 10 bolygórendszerből csak 1-ben van alkalmas bolygó
    ne = 0.15

    # fl : Azon bolygók aránya, ahol valóban ki is alakul az élet
    # Pesszimista érték: az alkalmas bolygók mindössze 1%-án jelenik meg az élet
    fl = 0.1

    # fi : Azon bolygók aránya, ahol az élet intelligens fajjá fejlődik
    # Pesszimista érték: az élővilággal rendelkező bolygók csupán 1%-án alakul ki intelligencia
    fi = 0.1

    # fc : Azon civilizációk aránya, amelyek technológiája jeleket küld az űrbe
    # Pesszimista érték: az intelligens fajok mindössze 1%-a képes/akar kommunikálni
    fc = 1

    # L : Egy kommunikációra képes civilizáció várható élettartama (években)
    # Pesszimista érték: egy civilizáció önmegsemmisítés vagy katasztrófa miatt csak 100 évig sugároz jeleket
    L = 500.0

    # A Drake-egyenlet kiszámítása a tényezők szorzataként
    N = R_star * fp * ne * fl * fi * fc * L

    # Eredmények kiíratása részletesen
    print(f"Alkalmazott tényezők:")
    print(f"  R* (Csillagkeletkezés)           = {R_star}/év")
    print(f"  fp (Bolygóval bíró csillagok)    = {fp * 100}%")
    print(f"  ne (Életre alkalmas bolygók)    = {ne} darab csillagonként")
    print(f"  fl (Ahol kiértékelődik az élet)  = {fl * 100}%")
    print(f"  fi (Ahol intelligens lesz)       = {fi * 100}%")
    print(f"  fc (Ahol kommunikálni képes)     = {fc * 100}%")
    print(f"  L  (A civilizáció élettartama)   = {L} év\n")

    print("-" * 50)
    print(f"A Tejútrendszerben JELENLEG észlelhető civilizációk száma (N):")
    print(f"N = {N:.8f}")
    print("-" * 50)
    
    print("\nMagyarázat:")
    if N < 1:
        print(f"Mivel az N értéke jóval kisebb mint 1 ({N:.8f}), a pesszimista modell szerint")
        print("szinte elhanyagolható az esélye annak, hogy a Földön kívül más civilizáció is létezik")
        print("jelenleg a Tejútrendszerben. Valószínűleg teljesen egyedül vagyunk.")
    else:
        print(f"A modell szerint jelenleg kb. {N} civilizáció létezhet a galaxisunkban.")

# Program futtatása
if __name__ == "__main__":
    drake_egyenlet_pesszimista()
----------------
--- Drake-egyenlet Számítás  --- 

Alkalmazott tényezők:
  R* (Csillagkeletkezés)           = 2.0/év
  fp (Bolygóval bíró csillagok)    = 70.0%
  ne (Életre alkalmas bolygók)    = 0.15 darab csillagonként
  fl (Ahol kiértékelődik az élet)  = 10.0%
  fi (Ahol intelligens lesz)       = 10.0%
  fc (Ahol kommunikálni képes)     = 100%
  L  (A civilizáció élettartama)   = 500.0 év

--------------------------------------------------
A Tejútrendszerben JELENLEG észlelhető civilizációk száma (N):
N = 1.05000000
--------------------------------------------------

Magyarázat:
A modell szerint jelenleg kb. 1.05 civilizáció létezhet a galaxisunkban.

=== Code Execution Successful ===

Futtatás; https://colab.research.google.com/

Adattábla létregozása Access-ben


ACCESS ALKALMAZÁS MEGNYITÁSA




ÜRES ASZTALI  ADATBÁZIS









ELNEVEZÉSE


DOKUMENTUMOKBA MENTI







TERVEZŐNÉZET OSZLOPOK MEZŐK LÉTREHOZÁSA


ADATOK FELTÖLTÉSE



TÁBLA ELNEVEZÉSE




ELSŐDLEGES KULCS




ADATOK FELTÖLTÉSE



TÁBLA MENTÉSE

TÖBB ADATTÁBLA KAPCSOLATA KULCCSAL




2026. szeptember 8., kedd

Létezés az univerzumban

Nem lehet az ember értelmes lény, mivel nagyon keveset tudunk, és ebből következtetéseket vonunk le. A lehetőségeink korlátozottak, a szenzoraink és az elménk még nem elég érett a szenzorok által felfogott ingerek felismerésére és értelemzésére. Az érzékelés a valóság torz leképezése. A létező valóság, csak elenyésző részét érzékeljük és arról is hamis képet alkozunk. A dark forest theory szerint aki értelmes elrejtőzik, aki ostoba jeleket küld, mint az ember. Stephen Hawking elméleti fizikus figyelmeztette az emberiséget, azonnal állítsák le a METI programot. A SETI hallhatózik, az nem baj. Ez a magyarázat a Fermi-paradoxonra, vagyis arra, hogy miért nem találtunk még nyomát értelmes földönkívüli civilizációknak, noha az univerzumban milliárdnyi lakható bolygó létezhet., de esztivációban vannak. Az univerzum olyan, mint egy sötét erdő, ami telistele van zajjal, bujjunk el benne, és ne ricsajozzunk eszetlenül, nem tudhatjuk hogy vadász vagy préda leszünk az idegenek számára.  Ebben a rendszerben minden értelmes civilizáció rejtőzködik, mert a túlélés a legfőbb céljuk, és bárki, aki felfedi a helyét, azonnali célponttá válhat.  Minden civilizáció fennmaradásra törekszik, és mindent megtesz a megmaradásáért.A növekedés kényszere: Az erőforrások végesek, de a civilizációk igényei folyamatosan nőnek, ezért elkerülhetetlenül terjeszkedni akarnak.A bizalmatlanság törvénye: Ha egy idegen civilizáció találkozik egy másikkal, nem tudhatja, hogy a másik békés-e vagy sem. Sosem kockáztathatják meg, hogy a másik fejlődjön meg előbb, vagy hogy veszélyt jelentsen rájuk.A megelőző csapás logikája: Mivel a kozmikus távolságok és az időbeli eltérések miatt a kommunikáció vagy a béke nem garantálható, az egyetlen biztos védekezés a mások elpusztítása, mielőtt ők tennék meg ugyanezt. Ehhez illeszkedik a  pánspermia egy tudományos hipotézis, amely szerint az élet csírái vagy „magjai” jelen vannak az egész világegyetemben, és a földi élet is ilyen külső magvakból indult ki.  Az elmélet szerint a mikrobák, baktériumok vagy az élethez szükséges szerves molekulák (például aminosavak) üstökösök, meteorok vagy űrbeli por útján juthatnak el egyik égitestről a másikra. A tudomány a Földön történő életkezdetet (abiogenezist) tartja valószínűbbnek, egyes űrkutatási és laboratóriumi kísérletek (például baktériumok viselkedése az űrben) bizonyították bizonyos mikroorganizmusok extrém tűrőképességét. Elkepzelheto-hogy-az-idegenek-meteorok-segitsegevel-kolonizaljak-az-univerzumot) Az exogenezis, amit gyakran kevernek ezzel a rokon fogalommal, amely csak azt állítja, hogy az élet máshonnan érkezett a Földre. A civilizációk kialakulása közötti időrés óriási, ezért nem tudunk találkozni senkivel. 13 milliárd éve létezik a galaxis, mi pedig 90 éve bámuljuk az eget. Civilizációk milliói fejlődhettek ki és tünhettek el nyomtalanul.  NEm az a kérdés hol vannak, hanem az hogy az evolúciójuk mikor zajlott le. Az élet esélye kicsi, az idő végtelen és ebben a végtelenben találkozni , vagy párhuzamosan kialakulni civilizációnak, szinte 0. Az univerzum óriási, a távolságok leküzdhetetlenek, az objektumok félelmetesek. Az idő és a távolság óriási áthidalhatatlan szakadékát nem lehet leküzdeni, túl primitívek vagyunk. Mire érzékelünk egy jelet, mire megérkezik a földre, az a valami ami küldte már rég nem létezik. Pár tízezer évig marad fenn a földön egy civilizáció, az UAP  veszélyekről nem is beszélve. Ez az idő olyan parányi az univerzum méreteihez képest, hogy képtelenség hogy ideérjen egy fényjel és a kibocsátó még éljen. Amit szenzoraink érzékelnek az a múlt már rég nem létezik, vagy már elhaladtak a föld mellett, 5000 éve, amikor még fejletlenek voltunk és nem voltunk képesek érzékelni a rádiójeleket. Az invert négyzet törvénye miatt már nem érzékelhetők a jelek, illetve nem lehet mehkülömböztetni a zajtól. A civilizáció kérészéletü, az univerzum pedig egy aggastyán. 130 éve nem is hallottunk semmit a vilgáűrből. Tegát egy civilizáció ami 135 éve küldött üzenetet, de mi nem tudtuk felfogni. A pánspermiára sokkal nagyobb az esély. Mire egy bolygó az élet számára alkalmas állapotba kerül, a földet már régen telibevágta egy aszteroida és becsapódott a napba. A józanész próbára teszi az elmét, ha eltudunk rugaszkodni az ostoba földgözragadt hipotéziseinktől, beláthatjuk hogy sosem fogunk találkozni UFOkkal. Az univerzumban zajló evolúciós folyamatok, csak egy pillanatig tartanak, ami egy végtelen időskálán elvész. A civilizációk apró villanások a sötét kozmoszban, és a villanás talán már a végér is jelenti. Az emberi civilizáció csupán 12000 éves, ahhoz hogy talákozzon két civilizáció az univerzumban, azonos fejletségi szinten kell lenniük és elérhető közelségben és azonos dimenzióban  és egy időben.  Azonos jeleket kell használniuk és a másiknak képesnek kell fogni és dekódolni a jeleket, miközben a 12000 év alatt még arra vagyunk képesek hogy a háziasitott kutyák, macskák, vagy madarak  nyelvét megfejtsük. Még a párezer éves emberi nyelveket sem értjük meg. Ha a fejlettebb nem akar kommunikálni, mi hiába próbálkozunk, ő elbújik a sötétben. A kibocsátott jel 1000 szer tovább bolyong mint amíg a civilizáció képes fennmaradni. Az űr televan halott élőlények üzeneteivel, amik csak kísértetek. Az észlelhetőség ablaka, az idő pillanatnyi szelte, amit elkerültünk mert rosszkor voltunk rossz helyen, ez az időbeli izoláció. Történnek olyan anomáliák, amikor egy pillanatra egy ismeretlen dimenziót megpillantunk, de ez megismételhetetlen és felfoghatatalan. Az univerzum egy óriási temető, ahol csak port látunk és szétszóródott rádiójeleket, de az észlelt jel csupán kísértete a múltnak, ahol a csend a leghangosabb zaj. 10000 év elég ahhoz, hogy nyomtalanul eltünjön minden bizonyítéka a civilizációnak. Nem tudjuk hogy hány civilizáció született és tünt el nyomtalanul a földön és a galaxisban, vagy az univerzumban. Csak egy sivatagot látunk ami valaha virágzó rózsakert volt, ahol a rózsák röcid ideig pompáztak. Számtalan forgatókönyve lehet a civilizáció pusztulásának. A civilizáció legtovább megmaradó következménye az üveg, ami 2 millió év alatt válik porrá. Sokezer hibát követünk el, az evolúció során, és minden hiba magában hordozza a civilizációnk végzetét. 300.000 galaxist észlelünk, de vajon hányat nem ismerünk? Ha valaki messziről ránéz a földre, a körülötte keringő szemetet és műholdakat porfelhőnek látja és természetes gyűrűnek tekinti.

2026. szeptember 7., hétfő

A térbeli divergencia elmélete

A térbeli divergencia egy vektormező adott pontbeli megváltozását – forrás- vagy nyelő jellegét – mérő differenciál operátor, amely megadja, hogy mennyi vektor áramlik ki egy adott kis térfogatból. Van pozitív és negatív divergencia, és zéró divergencia, ahol a beáramlás és a kiáramlás egyensúlyban van (forrásmentes vagy szolenoidális mező). Ahhoz hogy metrikus legyen skalárissá kell alakítani. A divergencia kiszámítása numerikus gradiensek segítségével történik.
--------------
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 1. Háromdimenziós koordinátarács (Grid) létrehozása
x = np.linspace(-2, 2, 10)
y = np.linspace(-2, 2, 10)
z = np.linspace(-2, 2, 10)
X, Y, Z = np.meshgrid(x, y, z)

# 2. A vektormező komponenseinek definiálása (F = [U, V, W])
# Példa: F(x,y,z) = [x, y, z] -> Forrás mező
U = X
V = Y
W = Z

# 3. A divergencia kiszámítása numerikus gradiensek segítségével
# A np.gradient visszaadja a parciális deriváltakat az egyes tengelyek mentén
dU_dx, _, _ = np.gradient(U, x, y, z)
_, dV_dy, _ = np.gradient(V, x, y, z)
_, _, dW_dz = np.gradient(W, x, y, z)

# Divergencia: div(F) = dU/dx + dV/dy + dW/dz
divergence = dU_dx + dV_dy + dW_dz

# 4. Az eredmények kiíratása a konzolra (középső pont mintáján)
print(f"A mező divergenciája a középpontban: {divergence[5, 5, 5]:.2f}")

# 5. Vizualizáció 3D-ben
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# Vektormező kirajzolása nyilakkal (Quiver plot)
# A szín a divergencia értékét tükrözi (mivel itt konstans, egységes lesz)
quiver = ax.quiver(X, Y, Z, U, V, W, length=0.1, normalize=True, cmap='jet')

# Tengelyek feliratozása
ax.set_xlabel('X tengely')
ax.set_ylabel('Y tengely')
ax.set_zlabel('Z tengely')
ax.set_title('3D Vektormező és Divergencia vizualizáció')

plt.show()
---------------


Monitorozás a Wiresharkban

A ping (ICMP) csomagok Wiresharkban való elfogásához indítsd el a rögzítést a megfelelő hálózati interfészen, majd használd az icmp szűrőt.

Lépések

1. Interfész kiválasztása: Nyisd meg a Wireshark programot, és a kezdőképernyőn válaszd ki azt az aktív hálózati kártyát (Wi-Fi vagy Ethernet), amin a forgalom zajlik.
2. Rögzítés indítása: Kattints a bal felső sarokban lévő kék cápauszony ikonra (Start capturing packets).
3. Ping küldése: Nyiss meg egy parancssort (terminált vagy Windows Command Promptot), és indíts el egy ping tesztet (pl. ping 8.8.8.8).
4. Szűrés beállítása: A felső Display Filter mezőbe írd be, hogy:
text
icmp
 
majd nyomj Entert. Ekkor csak az ICMP (Echo Request és Echo Reply) csomagok maradnak láthatók. 

Hasznos szűrők

icmp.type == 8: Csak a kimenő ping kérések (Echo Request).
icmp.type == 0: Csak a beérkező válaszok (Echo Reply).

A ping (ICMP) csomagok Wiresharkban való elfogásához indítsd el a rögzítést a megfelelő hálózati interfészen, majd használd az icmp szűrőt.LépésekInterfész kiválasztása: Nyisd meg a Wireshark programot, és a kezdőképernyőn válaszd ki azt az aktív hálózati kártyát (Wi-Fi vagy Ethernet), amin a forgalom zajlik.

Rögzítés indítása:

 Kattints a bal felső sarokban lévő kék cápauszony ikonra (Start capturing packets).

Ping küldése: 

Nyiss meg egy parancssort (terminált vagy Windows Command Promptot), és indíts el egy ping tesztet (pl. ping 8.8.8.8).

Szűrés beállítása: 

A felső Display Filter mezőbe írd be, hogy:texticmp  majd nyomj Entert. 
Ekkor csak az ICMP (Echo Request és Echo Reply) csomagok maradnak láthatók

A Wireshark titkai: 

Hogyan elemezzem a hálózati forgalmat ...Egyszer egy VPN-kapcsolatnál ez volt a gond: a SYN csomagok eljutottak, de a válaszok nem tértek vissza, mert egy firewall blokkol.Példa arra, hogyan kell szűrőket beállítani még a rögzítés előtt (Capture Filter),A rögzítés előtti szűréssel (Capture Filter) rengeteg memóriát és erőforrást spórolhatsz meg, mert a Wireshark ilyenkor csak a ping csomagokat menti el, a többi hálózati forgalmat (pl. böngészés, videók) teljesen figyelmen kívül hagyja.A rögzítés előtti szűrők szintaxisa (BPF - Berkeley Packet Filter) eltér a rögzítés utáni (Display Filter) szűrőkétől.

Lépések a Capture Filter beállításához

Nyisd meg a Wiresharkot, de még ne indítsd el a rögzítést.Keresd meg a főképernyő közepén található zöld sávot: "using this filter:" beviteli mező.Írd be a mezőbe a következő szót:texticmp
 Ha a mező háttere zöldre vált, a szintaxis helyes. Duplán kattints arra a hálózati interfészre (pl. Wi-Fi, Ethernet), amelyen a pinget futtatni fogod. A Wireshark ekkor elindítja a rögzítést, és kizárólag az ICMP (ping) csomagokat fogja mutatni. További hasznos Capture Filter példák pingeléshez Ha pontosabban szeretnéd meghatározni, hogy mit mentsen el a program, kombinálhatod a szűrőket: Csak egy adott IP-cím pingelése: Ha csak a 8.8.8.8-ra küldött vagy onnan érkező pingeket akarod látni: texticmp and host 8.8.8.8  Csak IPv6 alapú ping (ping6) elfogása: texticmp6

  Egy adott gép ping forgalmának kizárása: 

 Ha a 192.168.1.50 címről érkező pingeket nem akarod rögzíteni:texticmp and not src host 192.168.1.50  

 -------------------------------------------------------- 

FTP adatcsomag elfogása 

Az FTP-forgalom Wiresharkkal történő elfogása kiválóan szemlélteti, hogy miért nem biztonságos ez a protokoll: a felhasználónevek, jelszavak és a küldött fájlok teljesen titkosítatlanul, plain text (sima szöveg) formátumban utaznak a hálózaton.Az FTP két különböző csatornát használ, amit fontos észben tartani a szűrésnél: a 21-es portot a parancsokhoz (bejelentkezés, utasítások) és a 20-as portot (vagy dinamikus portokat) a tényleges adatátvitelhez (fájlok listázása, letöltése).Lépések a rögzítéshez és szűréshezRögzítés előtti szűrő (Capture Filter): Ha már az indítás előtt le akarod szűkíteni a forgalmat csak az FTP-re, írd be a zöld sávba:textport 21 or port 20
 Indítsd el a rögzítést, majd a parancssorban vagy egy FTP-kliensben (pl. FileZilla) csatlakozz egy FTP-szerverhez és jelentkezz be.Rögzítés utáni szűrő (Display Filter): A felső keresősávba írd be, majd nyomj Entert:textftp




 A jelszó és felhasználónév megkeresése
Menjen a "FOLLOW"-ra, majd a "TCP STREAM"-re. Ha odaért, keresse meg a piros szövegrészeket, ott van a jelszó és a felhasználónév, amit a védelem nélküli bejelentkezési oldalon megadott.
Ha az ftp szűrő aktív, a Wireshark ablakában azonnal láthatod a bejelentkezési adatokat: Keresd meg a USER kezdetű csomagot (pl. Request: USER admin) – ez a felhasználónév. Közvetlenül alatta lesz a PASS kezdetű csomag (pl. Request: PASS TitkosJelszo123) – ez a jelszó.
 Tipp: A teljes beszélgetés egybefüggő olvasása (Follow TCP Stream)Ahelyett, hogy csomagonként keresgélnél, a Wireshark képes egyetlen átlátható szöveggé összefűzni a teljes folyamatot:
Kattints a jobb egérgombbal bármelyik listázott FTP csomagra. Válaszd a Follow -> TCP Stream lehetőséget. Egy új ablak nyílik meg, ahol vörös színnel láthatod a te kliensed által küldött parancsokat (felhasználónév, jelszó), és kék színnel a szerver válaszait.




A HTTP-forgalom elfogása és elemzése 

A Wiresharkban megmutatja, hogyan utaznak a weblapok adatai titkosítatlanul a hálózaton. Az FTP-hez hasonlóan a HTTP is plain text (sima szöveg) formátumban küldi a kéréseket és a válaszokat, így a beírt adatok, sütik (cookies) és űrlapok tartalma könnyen olvasható. Mivel a modern weboldalak szinte kivételével már a titkosított HTTPS-t használják, a sima  HTTP teszteléséhez egy kifejezetten erre fenntartott, titkosítatlan tesztoldalt (pl. http://vulnweb.com vagy http://example.com) érdemes megnyitni. Lépések a rögzítéshez és szűréshezRögzítés előtti szűrő (Capture Filter): Ha már az indítás előtt csak a HTTP-forgalomra akarsz koncentrálni (amely alapértelmezetten a 80-as portot használja), írd be a főképernyő zöld sávjába:textport 80
 Indítsd el a rögzítést, majd a böngésződben nyiss meg egy sima HTTP-s weboldalt, és végezz el egy műveletet (pl. kattints egy linkre vagy tölts ki egy bejelentkezési űrlapot). Rögzítés utáni szűrő (Display Filter): A felső keresősávba írd be, majd nyomj Entert:texthttp



 
Mit kell keresni az elfogott csomagokban?

A HTTP-forgalomban a legfontosabb csomagok a következők:GET kérések: Amikor a böngésződ lekér egy oldalt vagy képet (pl. GET /index.php HTTP/1.1).POST kérések: Amikor adatot küldesz a szervernek (pl. űrlap kitöltése, bejelentkezés). Itt találhatóak meg a jelszavak és felhasználónevek.200 OK válasz: A szerver sikeresen visszaküldte a kért weboldalt. Bejelentkezési adatok és űrlapok megtekintéseHa valaki bejelentkezik egy HTTP oldalon, az adatai a POST kérésben lesznek:Keresd meg a listában azt a sort, ahol az Info oszlopban az áll: POST /....Kattints rá, majd az alsó Packet Details (Csomag részletei) ablakban nyisd meg az HTML Form URL Encoded sávot. Itt listázva láthatod az űrlap mezőit, például: username: admin, password: titok123. Tipp: A teljes weboldal-lekérés megtekintése (Follow HTTP Stream)A struktúra átlátásához kattints a jobb egérgombbal bármelyik HTTP csomagra, majd válaszd a Follow -> HTTP Stream lehetőséget.  A megnyíló ablakban vörössel láthatod a böngésződ által küldött fejléceket (sütik, User-Agent), kékkel pedig a szerver válaszát, valamint magát a weboldal forráskódját (HTML/CSS).




Konfiguráció törlése

Amikor egy menedzselt hálózati kapcsolón (switch) törlöd a konfigurációt és újraindítod azt, a Wiresharkban nem magát a törlési parancsot fogod látni (mivel az a konzol- vagy SSH-vonalon történik), hanem a switch "újjászületésének" és a hálózat újrarendeződésének a fázisait.A konfiguráció nélküli switch olyan, mint egy tiszta lap: nincsenek VLAN-ok, nincs IP-címe, és az alapértelmezett protokollokkal próbálja feltérképezni a környezetét.1. Mire figyelj a Wiresharkban az újraindítás alatt?A folyamat során a következő kritikus fázisokat és protokollokat fogod látni a Wireshark listájában:A csend fázisa (Link Down): Amint kiadod az újraindítás parancsot, a switch portjai lekapcsolnak. A Wiresharkban hirtelen teljesen megszűnik az adott interfész forgalma.A portok éledezése (Spanning Tree Protocol - STP): Amikor a switch újraindul, az első dolga, hogy megelőzze a hálózati hurkokat. Elkezd STP BPDU csomagokat küldözgetni.Identitás keresése (Discovery Protokollok): Mivel nincs konfigurációja, a switch elkezdi reklámozni magát a szomszédainak, hogy kiderítse, hol van. Itt CDP (Cisco) vagy LLDP (nyílt szabvány) csomagokat fogsz látni.IP-cím kérése (DHCP / ARP): Ha a switch gyári beállításon van, megpróbál IP-címet kérni a hálózattól. DHCP Discover csomagokat fogsz látni a forgalomban.2. Hogyan szűrd ezeket a Wiresharkban?A rögzítés elindítása után érdemes az alábbi Display Filter (rögzítés utáni) szűrőket használni a switch éledezésének követésére:A switch felfedezése (Gyári név és port információk)textlldp or cdp
 Mit látsz itt? Ha megnyitod az LLDP/CDP csomag részleteit, látni fogod a switch gyári modelljét, a szoftver verzióját (System Description), a switch nevét (ami konfiguráció törlés után gyakran csak "Switch" vagy a gyári MAC cím), és azt, hogy melyik fizikai porton küldte ki a csomagot.A hurokvédelem és a portok állapotatextstp
 Mit látsz itt? Azt, ahogy a switch bejelenti magát Root Bridge-nek (mivel törölve lett a prioritás beállítása, a gyári alapértelmezett 32768-as értéket fogja használni).Az IP-cím szerzési kísérlettextdhcp or arp  

 Mit látsz itt? A switch 0.0.0.0 forrás IP-címmel küld egy DHCP kérést, amiben szerepel a saját MAC címe. Ebből láthatod, hogy a switch sikeresen elindult és működik a hálózati réteg (Layer 3) is.3. Gyakorlati tipp a vizsgálathozHa közvetlenül a PC-d van összekötve a switch-el a konfiguráció törlésekor:Indítsd el a Wireshark rögzítést a PC-den.Add ki a switch-en a törlő parancsokat (Cisco esetén pl.: write erase, majd reload).Írd be a Wireshark szűrőbe: stp or lldp or dhcp.Figyeld a képernyőt: nagyjából 1-3 percig (a switch bootolási idejétől függően) semmit sem fogsz látni, majd hirtelen felbukkannak az első STP, utána az LLDP, végül a DHCP csomagok. Ez a csalhatatlan jele annak, hogy a switch sikeresen alaphelyzetbe állt és elindult.

Forgalomirányító konfigurációjának törlése 

Amikor egy forgalomirányítón (router) törlöd a konfigurációt és újraindítod (Reload), a folyamat hálózati lenyomata a Wiresharkban nagyon hasonló a switch-hez, de van néhány kulcsfontosságú különbség. A router egy Layer 3 (hálózati rétegbeli) eszköz, így a gyári alaphelyzetbe állás után a legfőbb célja nem a hurokvédelem (STP), hanem az IP-cím szerzése és a szomszédsági kapcsolatok feltérképezése.Mivel a konfiguráció törlésével minden egyedi IP-cím és interfész-beállítás elveszik, a router portjai kezdetben "némák" lesznek, majd a gyári alapbeállítások szerint kezdenek el kommunikálni.1. A router újjászületésének fázisai a WiresharkbanA router újraindulása (bootolása) után a következő protokollok fognak megjelenni a Wireshark listájában:IP-cím kérése (DHCP): Mivel a router interfészeinek nincs fix IP-címe, a külső (WAN) vagy akár a belső portjain is megpróbál IP-címet kérni a hálózattól. DHCP Discover csomagokat fogsz látni 0.0.0.0 forráscímmel.Hálózatfelderítés (LLDP / CDP): A router azonnal elkezdi hirdetni a saját alapértelmezett adatait. LLDP vagy CDP csomagokat küld, amikből kiolvasható az eszköz gyári neve (pl. "Router"), a szoftver verziója és a port száma.Helyi hálózati jelenlét (IPv6 Router Advertisement - ICMPv6): Sok modern router alapértelmezetten bekapcsolt IPv6-tal érkezik. Amint elindul, Router Advertisement (RA) csomagokat küld szét a hálózaton, hogy jelezze az ott lévő eszközöknek: ő egy átjáró (gateway).Útvonalválasztó protokollok eltűnése (Routing Protocols): Ha a törlés előtt futott a routeren OSPF, BGP vagy EIGRP, az újraindítás pillanatában a Wiresharkban látható lesz, hogy ezek a csomagok megszűnnek, és az újraindulás után sem térnek vissza (mivel törlődött a konfigurációjuk).2. Hogyan szűrd ezt Wiresharkban?A router újraindulásának és alaphelyzetbe állásának követéséhez használd az alábbi Display Filter szűrőt:textdhcp or lldp or cdp or icmpv6.type == 134



 Mit látsz az egyes részeknél?

A dhcp megmutatja, hogy a router megpróbál-e IP-címet kapni valamilyen külső szervertől.lldp or cdp: Ha rákattintasz egy ilyen csomagra, a Packet Details (Csomag részletei) ablakban a System Name mezőnél már nem a korábbi egyedi nevet fogod látni, hanem a gyári alapértelmezettet (pl. Router).icmpv6.type == 134: Ez szűri ki a Router Advertisement csomagokat. Ha a router gyári állapotban is küld ilyet, itt láthatod az alapértelmezett IPv6 prefixeket.3. Hogyan néz ki ez a gyakorlatban? (Példa Cisco routerrel)Ha a router egy Cisco eszköz, a folyamat a következőképpen zajlik le a hálózaton:Konfiguráció törlése a routeren (Konzolon keresztül):textRouter# erase startup-config Router# reload

 Wireshark rögzítés: 

Indítsd el a rögzítést a routerhez kapcsolódó PC-den a fenti szűrővel.A bootolási szünet: A router modelltől függően 2-5 percig bootol. Ezalatt a Wiresharkban teljes csend van az adott porton.Az első jelek: Amint a IOS szoftver betölt beállítások nélkül, a Wiresharkban azonnal megjelennek az LLDP/CDP csomagok "Router" névvel, és elindulnak a DHCP kérések. Ha a routeren elindul a gyári alapbeállító varázsló (Initial Configuration Dialog), az eszköz addig ismételgeti ezeket a felfedező csomagokat, amíg egy alapvető IP-címet nem kap.




A Cisco SDM (Security Device Manager) egy régebbi, webalapú grafikus felület (GUI), amely lehetővé teszi a Cisco forgalomirányítók kényelmes konfigurálását. Ahhoz, hogy az SDM-en keresztül el tudd érni a routert, magán az eszközön a parancssorban (CLI) engedélyezned kell a HTTP/HTTPS szervert, be kell állítanod egy megfelelő jogosultságú felhasználót, és konfigurálnod kell a távoli elérést. Az SDM egy webes felület, így a routernek képesnek kell lennie kiszolgálni a HTTP-kéréseket, és azonosítania kell a belépő felhasználót a helyi adatbázisból:textip http server
ip http secure-server  ip http authentication local
 
Magas jogosultságú felhasználó létrehozása Az SDM-nek teljes hozzáférésre van szüksége a konfiguráció módosításához. Ehhez egy 15-ös szintű (legmagasabb) privilégiummal rendelkező felhasználói fiók szükséges textusername <felhasznalonev> privilege 15 secret <jelszo>
 (Ha a router teljesen gyári állapotú, előfordulhat, hogy alapértelmezetten a cisco / cisco párossal enged be az első alkalommal.) 
A virtuális terminálvonalak (VTY) beállításaAz SDM a háttérben Telnet vagy SSH protokollon keresztül küldi el a parancsokat a routernek. Engedélyezni kell a bejelentkezést a VTY vonalakon a helyi adatbázis alapján:
 login local
 transport input telnet ssh
 IP-cím és interfész beállításaBiztosítanod kell, hogy a PC-d el tudja érni a routert. Adni kell egy IP-címet annak az interfésznek (pl. FastEthernet0/0), amire a számítógépedet kötötted:textinterface FastEthernet0/0   ip address 192.168.1.1 255.255.255.0   no shutdown

Hogyan ellenőrizheted Wiresharkban?

Ha a fenti parancsok beállítása után a böngésződből megnyitod az SDM-et (beírod a router IP-címét, pl. http://192.168.1.1), a Wiresharkban a következő hálózati forgalmat fogod látni:HTTP/HTTPS kérések: A tcp.port == 80 vagy tcp.port == 443 szűrővel láthatod, ahogy a PC-d letölti a router flash memóriájából az SDM-hez szükséges Java appletet vagy HTML fájlokat. [1])Háttérkommunikáció: Miután a grafikus felület betöltött, az SDM elkezd parancsokat küldözgetni a háttérben a routernek. Ha a sima HTTP-t használtad, a tcp.port == 23 (Telnet) szűrővel és a Follow TCP Stream opcióval konkrétan olvashatod azokat a Cisco CLI parancsokat, amiket az SDM a kattintásaid alapján automatikusan végrehajt a háttérben.

Összegzés

A Wireshark egy hálózati forgalomelemző (packet sniffer) eszköz, amellyel részletesen megvizsgálhatod a hálózati adatcsomagokat. Attól függően, hogy pontosan mit szeretnél ellenőrizni (például egy IP-címet, egy protokollt, jelszavakat vagy egy hálózati hibát), a folyamat a következő lépésekből áll:1. Forgalom rögzítése (Capture)Indítsd el a Wiresharkot.Válaszd ki azt a hálózati kártyát (pl. Wi-Fi vagy Ethernet), amelyiken a forgalom zajlik.Kattints a bal felső sarokban található kék cápauszony ikonra a rögzítés elindításához.Generálj forgalmat azon az eszközön/alkalmazásban, amit ellenőrizni szeretnél.Kattints a piros négyzet ikonra a rögzítés leállításához.2. Keresés és szűrés (Display Filters)A Wireshark rengeteg adatot rögzít, ezért a legfontosabb lépés a felső szűrősáv (Display Filter) használata. Írj be egy szűrőt, majd nyomj Entert:Adott IP-cím ellenőrzése: ip.addr == 192.168.1.1 (minden forgalom, amiben ez az IP részt vesz)Adott protokoll ellenőrzése: Egyszerűen írd be a protokoll nevét kisbetűvel. Például: dns, http, icmp (ping), tls.Port szám alapján: tcp.port == 443 vagy udp.port == 53.Szűrés szövegre (pl. jelszó vagy felhasználónév keresése): frame contains "password" vagy http contains "admin".3. A csomagok részletes vizsgálataHa találtál egy érdekes csomagot a listában, kattints rá. A képernyő alsó részén két fontos panelt látsz:Középső panel (Packet Details): Itt fastruktúrában láthatod a csomag rétegeit (fizikai réteg, IP-réteg, TCP/UDP-réteg, alkalmazás réteg). A nyilakkal lenyitva minden mezőt részletesen elolvashatsz.Alsó panel (Packet Bytes): A csomag nyers tartalma hexadecimális és ASCII (szöveges) formátumban.4. A teljes beszélgetés követése (Follow Stream)Ha egy teljes folyamatot (pl. egy weboldal letöltését vagy egy csevegést) egyben szeretnél látni, nem kell a csomagokat egyesével nézegetned:Kattints a jobb egérgombbal az egyik kapcsolódó csomagra.Válaszd a Follow -> TCP Stream (vagy UDP Stream, HTTP Stream) lehetőséget.Egy új ablakban felugrik a teljes kommunikáció szöveges, könnyen olvasható formátumban (a kliens küldése piros, a szerver válasza kék színnel).Biztonsági tipp: Miért nem látsz mindent?Ha a forgalom titkosított (HTTPS/TLS): A tartalom olvashatatlan (halandzsa szöveg) lesz. Ilyenkor csak azt tudod ellenőrizni, hogy a kapcsolat létrejött-e, mekkora az adatforgalom, és ki a célpont (SNI alapján).Ha a forgalom nyílt (HTTP/FTP/Telnet): A Follow Stream funkcióval a jelszavak, textuális adatok és fájlok is teljes egészében, tisztán olvashatóak lesznek.

2026. szeptember 6., vasárnap

Mikor merül le az aksi a Voyager–2 űrszondánál? (python program)

Voyager–2 űrszonda jelenleg rendkívül szűkös energiakerettel gazdálkodik: a kilövéskori 470 wattos teljesítménye mára megközelítőleg 220-230 watt körüli értékre csökkent. Mivel az áramot biztosító rádióizotópos generátorok (RTG) hatékonysága folyamatosan romlik, a szonda évente körülbelül 4 watt energiát veszít.
----------
import datetime

def voyager_2_energia_becsles():
    # Aktuális év lekérése
    aktualis_ev = datetime.datetime.now().year
    
    # Kiindulási adatok a NASA mérései alapján
    # Feltételezett minimális működési energiaszint 1 műszerhez: kb. 230 Watt
    # Jelenlegi becsült energiaszint (2026-ban): kb. 246 Watt
    jelenlegi_energia = 246  
    eves_energia_veszteseg = 4.0  # watt / év
    
    # Határértékek
    minimum_energia_3_muszerhez = 245
    minimum_energia_1_muszerhez = 230
    teljes_leallasi_szint = 200 # Ahol a fűtés és a rádióadó sem kap elég áramot
    
    print("=" * 60)
    print(f"      VOYAGER-2 ENERGIA ELLÁTOTTSÁG BECSLŐ PROGRAM ({aktualis_ev})")
    print("=" * 60)
    
    ev = aktualis_ev
    energia = jelenlegi_energia
    
    # Éves szimuláció indítása
    while energia >= teljes_leallasi_szint:
        statusz = ""
        
        # Státusz meghatározása a fennmaradó wattok alapján
        if energia >= minimum_energia_3_muszerhez:
            statusz = "Mind a 3 megmaradt tudományos műszer működik."
        elif energia >= minimum_energia_1_muszerhez:
            statusz = "Tudományos műszerek fokozatos lekapcsolása. Csak 1 műszer aktív."
        else:
            statusz = "Műszerek leálltak. Csak a kritikus rendszerek és a rádióadó működik."
            
        print(f"Év: {ev} | Becsült energia: {energia:.1f} W | Állapot: {statusz}")
        
        # Időléptetés (következő év)
        ev += 1
        energia -= eves_energia_veszteseg

    print("=" * 60)
    print(f"Befejezés: {ev-1}-ra a Voyager-2 energiája a kritikus {teljes_leallasi_szint} W alá csökken.")
    print("A szonda teljesen elnémul, de örökre folytatja útját a csillagközi térben.")
    print("=" * 60)

if __name__ == "__main__":
    voyager_2_energia_becsles()

--------------
============================================================
      VOYAGER-2 ENERGIA ELLÁTOTTSÁG BECSLŐ PROGRAM (2026)
============================================================
Év: 2026 | Becsült energia: 246.0 W | Állapot: Mind a 3 megmaradt tudományos
 műszer működik. Működő tudományos műszerek: A Voyager–2 jelenleg 3 aktív 
tudományos műszerrel üzemel:Kozmikus sugárzást mérő alrendszer (CRS)Magnetométer 
(MAG)Plazmahullám-vizsgáló alrendszer (PWS)
Év: 2027 | Becsült energia: 242.0 W | Állapot: Tudományos műszerek fokozatos 
lekapcsolása. Csak 1 műszer aktív.
Év: 2028 | Becsült energia: 238.0 W | Állapot: Tudományos műszerek fokozatos
 lekapcsolása. Csak 1 műszer aktív.
Év: 2029 | Becsült energia: 234.0 W | Állapot: Tudományos műszerek fokozatos 
lekapcsolása. Csak 1 műszer aktív.
Év: 2030 | Becsült energia: 230.0 W | Állapot: Tudományos műszerek fokozatos
 lekapcsolása. Csak 1 műszer aktív.
Év: 2031 | Becsült energia: 226.0 W | Állapot: Műszerek leálltak. Csak a 
kritikus rendszerek és a rádióadó működik.
Év: 2032 | Becsült energia: 222.0 W | Állapot: Műszerek leálltak. Csak a
 kritikus rendszerek és a rádióadó működik.
Év: 2033 | Becsült energia: 218.0 W | Állapot: Műszerek leálltak. Csak a 
kritikus rendszerek és a rádióadó működik.
Év: 2034 | Becsült energia: 214.0 W | Állapot: Műszerek leálltak. Csak a 
kritikus rendszerek és a rádióadó működik.
Év: 2035 | Becsült energia: 210.0 W | Állapot: Műszerek leálltak. Csak a 
kritikus rendszerek és a rádióadó működik.
Év: 2036 | Becsült energia: 206.0 W | Állapot: Műszerek leálltak. Csak a 
kritikus rendszerek és a rádióadó működik.
Év: 2037 | Becsült energia: 202.0 W | Állapot: Műszerek leálltak. Csak a 
kritikus rendszerek és a rádióadó működik.
============================================================
Befejezés: 2037-ra a Voyager-2 energiája a kritikus 200 W alá csökken.
A szonda teljesen elnémul, de örökre folytatja útját a csillagközi térben.
============================================================
Sajnos a Voyager–2 a Naptól rendkívül távol, a csillagközi térben halad, 
ahol a napfény már elenyésző lenne az energiatermeléshez. Emiatt a szonda 
nem napelemeket, hanem egy RTG (rádióizotópos termoelektromos generátor) 
nevű eszközt használ. Ez a generátor a plutónium-238 radioaktív bomlása 
során keletkező hőt alakítja át elektromos árammá. Mivel nincsenek 
fényérzékeny napelemtáblái, a ráirányított lézerfényt sem tudná 
elektromossággá alakítani.

VOYAGER-2 TÁVKÖZLÉSI JELENTÉS pythonban

A Voyager–2 űrszonda jelenleg is küldi a telemetriai és tudományos adatait a csillagközi térből, több mint 140 csillagászati egységre a Földtől A mai napon milyen típusú adatok érkeznek a Voyager–2-től a Földre. (Lekérdezés)
----------------------
import datetime

def voyager2_mai_statusz():
    mai_datum = datetime.date.today().strftime("%Y. %m. %d.")
    
    # 2026-os aktuális adatok és státusz
    tavolsag_km = 21450000000  # Körülbelül 143 Csillagászati Egység
    jel_utasi_ido_ora = 19.87    # Egyirányú fényidő órában
    
    print("=" * 60)
    print(f"VOYAGER-2 TÁVKÖZLÉSI JELENTÉS - {mai_datum}")
    print("=" * 60)
    print(f"• Aktuális távolság a Földtől: ~{tavolsag_km:,} km".replace(",", " "))
    print(f"• A rádiójel útideje a Földig:  ~{jel_utasi_ido_ora} óra")
    print("• Helyszín:                     Csillagközi tér (Interstellar Space)")
    print("-" * 60)
    print("A MAI NAPON ÉRKEZŐ TELEMETRIAI ÉS TUDOMÁNYOS ADATOK:")
    print("-" * 60)
    
    # Aktív műszerek adatai 2026-ban
    aktiv_muszerek = {
        "Magnetométer (MAG)": 
            "Méri a helyi csillagközi mágneses mező irányát és erejét.",
        "Plazmahullám-alrendszer (PWS)": 
            "Az elektron-sűrűséget vizsgálja a vékony csillagközi plazma oszcillációi alapján.",
        "Kozmikus sugárzás alrendszer (CRS)": 
            "A Nap védőbuborékán kívüli, rendkívül nagy energiájú részecskék összetételét méri."
    }
    
    for muszer, leiras in aktiv_muszerek.items():
        print(f"[{muszer}]")
        print(f"  -> Adat státusza: Érkezik (Folyamatos mintavételezés)")
        print(f"  -> Leírás:        {leiras}\n")
        
    print("-" * 60)
    print("[Mérnöki / Egészségügyi adatok]")
    print("  -> RTG generátor feszültség, belső hőmérséklet és antenna-irányultság adatok.")
    print("=" * 60)

if __name__ == "__main__":
    voyager2_mai_statusz()
-----------------
============================================================
VOYAGER-2 TÁVKÖZLÉSI JELENTÉS - 2026. 09. 06.
============================================================
• Aktuális távolság a Földtől: ~21 450 000 000 km
• A rádiójel útideje a Földig:  ~19.87 óra
• Helyszín:                     Csillagközi tér (Interstellar Space)
------------------------------------------------------------
A MAI NAPON ÉRKEZŐ TELEMETRIAI ÉS TUDOMÁNYOS ADATOK:
------------------------------------------------------------
[Magnetométer (MAG)]
  -> Adat státusza: Érkezik (Folyamatos mintavételezés)
  -> Leírás:        Méri a helyi csillagközi mágneses mező irányát és erejét.

[Plazmahullám-alrendszer (PWS)]
  -> Adat státusza: Érkezik (Folyamatos mintavételezés)
  -> Leírás:        Az elektron-sűrűséget vizsgálja a vékony csillagközi plazma oszcillációi alapján.

[Kozmikus sugárzás alrendszer (CRS)]
  -> Adat státusza: Érkezik (Folyamatos mintavételezés)
  -> Leírás:        A Nap védőbuborékán kívüli, rendkívül nagy energiájú részecskék összetételét méri.

------------------------------------------------------------
[Mérnöki / Egészségügyi adatok]
  -> RTG generátor feszültség, belső hőmérséklet és antenna-irányultság adatok.
============================================================

Kepler-törvények és körmozgás pythonban

Íme egy 3D-s animált Python program, amely a Matplotlib könyvtár segítségével modellezi a Jupiter mozgását a Nap körül valós fizikai képletek (Kepler-törvények és körmozgás) alapján
-----------
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

# --- Csillagászati adatok (közelítő értékek) ---
# Jupiter távolsága a Naptól: ~5.2 Csillagászati Egység (AU)
# Jupiter keringési ideje: ~11.86 Föld-év
R_JUPITER = 5.2 
PERIOD_JUPITER = 11.86 

# Animációs beállítások
fps = 30
duration_years = 12  # Mennyi ideig fusson a szimuláció (évben)
frames = fps * duration_years

# Időlépések kiszámítása
t = np.linspace(0, duration_years, frames)
# Szögsebesség (omega = 2 * pi / T)
omega = 2 * np.pi / PERIOD_JUPITER
theta = omega * t

# Jupiter 3D koordinátáinak kiszámítása (enyhe 1.3 fokos pályaelhajlással)
inclination = np.radians(1.3)
x_jup = R_JUPITER * np.cos(theta)
y_jup = R_JUPITER * np.sin(theta) * np.cos(inclination)
z_jup = R_JUPITER * np.sin(theta) * np.sin(inclination)

# --- 3D Grafika inicializálása ---
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# Grafikon határai (AU-ban)
ax.set_xlim([-6, 6])
ax.set_ylim([-6, 6])
ax.set_zlim([-3, 3])

# Tengelyek feliratozása
ax.set_xlabel('X (AU)')
ax.set_ylabel('Y (AU)')
ax.set_zlabel('Z (AU)')
ax.set_title('A Jupiter mozgása a Nap körül 3D-ben')

# Égitestek és pálya megjelenítése
# Nap (Sárga gömb a középpontban)
ax.scatter([0], [0], [0], color='gold', s=300, label='Nap')

# Jupiter teljes pályavonala (halványan)
ax.plot(x_jup, y_jup, z_jup, color='gray', linestyle='--', alpha=0.5, label='Jupiter pálya')

# Jupiter (animált pont)
jupiter_dot, = ax.plot([], [], [], marker='o', color='chocolate', markersize=10, label='Jupiter')
# Jupiter mögötti csóva
trail, = ax.plot([], [], [], color='orange', alpha=0.7)

ax.legend(loc='upper left')

# --- Animációs függvények ---
def init():
    jupiter_dot.set_data([], [])
    jupiter_dot.set_3d_properties([])
    trail.set_data([], [])
    trail.set_3d_properties([])
    return jupiter_dot, trail

def update(frame):
    # Aktuális pozíció frissítése
    jupiter_dot.set_data([x_jup[frame]], [y_jup[frame]])
    jupiter_dot.set_3d_properties([z_jup[frame]])
    
    # Csóva frissítése az utolsó néhány pozíció alapján
    start_idx = max(0, frame - 20)
    trail.set_data(x_jup[start_idx:frame+1], y_jup[start_idx:frame+1])
    trail.set_3d_properties(z_jup[start_idx:frame+1])
    
    return jupiter_dot, trail

# Animáció elindítása
ani = animation.FuncAnimation(
    fig, update, frames=frames, init_func=init, interval=1000/fps, blit=True
)

plt.show()

---------------


Szimetrikus szimulált fundamentál plane pythonban

A fundamentális sík (fundamental plane) a galaxisok, különösen az elliptikus galaxisok tulajdonságai (például az effektív sugár, a felületi fényesség és a centrális diszperziós sebesség) közötti háromdimenziós összefüggés.Az alábbi Python kód egy szintetikus (szimulált) adatbázison mutatja be a fundamentális sík illesztését lineáris regresszió segítségével, majd vizualizálja azt egy 3D-s grafikonon.
-----------
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from mpl_toolkits.mplot3d import Axes3D

# 1. Szintetikus adatok generálása (Elliptikus galaxisok tulajdonságai)
# log_sigma: log10(centrális sebességdiszperzió)
# mu_e: effektív felületi fényesség
# log_R_e: log10(effektív sugár) -> Ezt fogjuk jósolni a sík egyenlete alapján
np.random.seed(42)
n_samples = 100

log_sigma = np.random.normal(2.1, 0.15, n_samples)
mu_e = np.random.normal(22.0, 1.0, n_samples)

# A fundamentális sík elméleti összefüggése: log(R_e) = a * log(sigma) + b * mu_e + c
# Valós csillagászati értékek kb: a = 1.2, b = 0.3
a_true, b_true, c_true = 1.2, 0.32, -8.5
log_R_e = a_true * log_sigma + b_true * mu_e + c_true + np.random.normal(0, 0.05, n_samples)

# 2. Modell illesztése (Lineáris regresszió)
X = np.column_stack((log_sigma, mu_e))
y = log_R_e

model = LinearRegression()
model.fit(X, y)

a_fit, b_fit = model.coef_
c_fit = model.intercept_

print(f"Illesztett egyenlet: log(R_e) = {a_fit:.2f} * log(sigma) + {b_fit:.2f} * mu_e + {c_fit:.2f}")

# 3. 3D Vizualizáció
fig = plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, projection='3d')

# Adatpontok kirajzolása
ax.scatter(log_sigma, mu_e, log_R_e, color='blue', alpha=0.6, label='Galaxisok')

# Az illesztett sík kiszámítása a grafikonhoz
sigma_range = np.linspace(log_sigma.min(), log_sigma.max(), 10)
mu_range = np.linspace(mu_e.min(), mu_e.max(), 10)
Sigma_grid, Mu_grid = np.meshgrid(sigma_range, mu_range)
R_e_grid = a_fit * Sigma_grid + b_fit * Mu_grid + c_fit

# Sík kirajzolása
ax.plot_surface(Sigma_grid, Mu_grid, R_e_grid, color='red', alpha=0.3, rstride=100, cstride=100)

# Tengelyek feliratozása
ax.set_xlabel('log $\sigma$ (Sebességdiszperzió)')
ax.set_ylabel('$\mu_e$ (Felületi fényesség)')
ax.set_zlabel('log $R_e$ (Effektív sugár)')
ax.set_title('A galaxisok fundamentális síkja')
ax.legend()

plt.show()

---------------


A fundamental plane, lineáris Bessel-elemek alapján pythonban

A Hold árnyéktengelyének távolságát a Föld középpontjától pythonban
------------------
import numpy as np

def bessel_eclipse_distance(t, x0, y0, x1, y1):
    """
    Kiszámítja a Hold árnyéktengelyének távolságát a Föld középpontjától
    az alapsíkon (fundamental plane), lineáris Bessel-elemek alapján.
    
    Paraméterek:
    t  : Eltelt idő a bázisidőpont óta (órában)
    x0, y0 : Az árnyéktengely x és y koordinátái a bázisidőpontban (t=0)
    x1, y1 : Az x és y koordináták óránkénti változása (sebessége)
    """
    # Az árnyék pozíciójának kiszámítása a t időpontban
    x = x0 + x1 * t
    y = y0 + y1 * t
    
    # A középponttól mért távolság (Pythagoras-tétel a Bessel-féle alapsíkon)
    distance = np.sqrt(x**2 + y**2)
    
    return x, y, distance

# --- PÉLDA ADATOK (Fiktív Bessel-elemek egy napfogyatkozás maximuma körül) ---
# A koordináták a Föld egyenlítői sugarának egységében vannak megadva
x_0, y_0 = -0.045, 0.352   # Pozíció a bázisidőben (t=0)
x_1, y_1 =  0.542, -0.124  # Óránkénti elmozdulás

# Időintervallum vizsgálata: -2 órától +2 óráig a bázisidőhöz képest
idopontok = [-2, -1, 0, 1, 2]

print(f"{'Idő (óra)':<12}{'X koord.':<12}{'Y koord.':<12}{'Távolság (Földsugár)'}")
print("-" * 55)

for t in idopontok:
    x_t, y_t, tavolsag = bessel_eclipse_distance(t, x_0, y_0, x_1, y_1)
    print(f"{t:<12.1f}{x_t:<12.4f}{y_t:<12.4f}{tavolsag:<12.4f}")

# Annak ellenőrzése, hogy az árnyék eltalálja-e a Földet
# Ha a minimális távolság < 1.0 (plusz a penumbra sugara), akkor van részleges/teljes fogyatkozás
t_min = -(x_0*x_1 + y_0*y_1) / (x_1**2 + y_1**2) # A legközelebbi pont időpontja
_, _, min_dist = bessel_eclipse_distance(t_min, x_0, y_0, x_1, y_1)

print("\nEredmény elemzése:")
print(f"Az árnyéktengely legkisebb távolsága a Föld középpontjától: {min_dist:.4f} Földsugár.")
if min_dist < 1.0:
    print("Az árnyék központi tengelye eléri a Föld felszínét (Centrális napfogyatkozás).")
else:
    print("Az árnyéktengely elhalad a Föld mellett (Csak részleges vagy nincs fogyatkozás).")
----------------
Idő (óra)   X koord.    Y koord.    Távolság (Földsugár)
-------------------------------------------------------
-2.0        -1.1290     0.6000      1.2785      
-1.0        -0.5870     0.4760      0.7557      
0.0         -0.0450     0.3520      0.3549      
1.0         0.4970      0.2280      0.5468      
2.0         1.0390      0.1040      1.0442      

Eredmény elemzése:
Az árnyéktengely legkisebb távolsága a Föld középpontjától: 0.3331 Földsugár.
Az árnyék központi tengelye eléri a Föld felszínét (Centrális napfogyatkozás).