2026. szeptember 5., szombat

Apophis Föld találkozási pont kiszámítása pythonban

A 99942 Apophis egy körülbelül 370 méter átmérőjű földközeli kisbolygó, amely 2029. április 13-án rendkívül közel, kevesebb mint 32 000 kilométerre halad el a Föld mellett. Számoljuk ki hol ütközhetünk vele a térben.
---------------------------
import numpy as np import matplotlib.pyplot as plt # --- Konstansok --- # Csillagászati Egység (AU) méterben AU = 1.496e11 # Gravitációs konstans * Nap tömege (m^3 / s^2) GM_sun = 1.32712440018e20 def calculate_orbit(a, e, num_points=1000): """ Kiszámítja az objektum x, y koordinátáit a pályája mentén. a: félgocatengely (AU) e: excentricitás (pályaelnyújtottság) """ a_m = a * AU # Átváltás méterbe # Excentrikus anomália (E) szögek 0 és 2*pi között E = np.linspace(0, 2 * np.pi, num_points) # Koordináták kiszámítása a pálya saját síkjában x = a_m * (np.cos(E) - e) y = a_m * (np.sin(E) * np.sqrt(1 - e**2)) return x / AU, y / AU # Visszatérés AU-ban a könnyebb ábrázolásért def find_closest_approach(ast_x, ast_y, earth_x, earth_y): """Megkeresi a legkisebb távolságot az aszteroida és a Föld pályája között.""" min_dist = float('inf') closest_ast_pos = (0, 0) closest_earth_pos = (0, 0) # Egyszerűsített távolságmátrix az összes pontra for i in range(len(ast_x)): for j in range(len(earth_x)): dist = np.sqrt((ast_x[i] - earth_x[j])**2 + (ast_y[i] - earth_y[j])**2) if dist < min_dist: min_dist = dist closest_ast_pos = (ast_x[i], ast_y[i]) closest_earth_pos = (earth_x[j], earth_y[j]) return min_dist, closest_ast_pos, closest_earth_pos # --- Föld pályaadatai --- a_earth = 1.000 # 1 AU e_earth = 0.0167 # Szinte tökéletes kör # --- Példa Aszteroida pályaadatai (pl. Apophis-szerű égitest) --- a_asteroid = 0.922 # Félnagytengely (AU) e_asteroid = 0.191 # Excentricitás # Pályák kiszámítása earth_x, earth_y = calculate_orbit(a_earth, e_earth) ast_x, ast_y = calculate_orbit(a_asteroid, e_asteroid) # Legközelebbi pont meghatározása min_distance, ast_close, earth_close = find_closest_approach(ast_x, ast_y, earth_x, earth_y) print(f"--- Pályaszámítási Eredmények ---") print(f"A Föld és az aszteroida pályájának legkisebb távolsága: {min_distance:.4f} AU") print(f"Ez kb. {min_distance * 149.6e6:.0f} kilométernek felel meg.") # --- Vizualizáció (Grafikon) --- plt.figure(figsize=(8, 8)) # Nap ábrázolása a fókuszpontban (0,0) plt.plot(0, 0, 'yo', markersize=12, label='Nap') # Pályák kirajzolása plt.plot(earth_x, earth_y, 'b-', label='Föld pályája') plt.plot(ast_x, ast_y, 'r--', label='Aszteroida pályája') # Legközelebbi megközelítés vonala plt.plot([ast_close[0], earth_close[0]], [ast_close[1], earth_close[1]], 'g-', linewidth=2, label='Legkisebb távolság') plt.plot(ast_close[0], ast_close[1], 'ro', markersize=6) plt.plot(earth_close[0], earth_close[1], 'bo', markersize=6) # Grafikon beállítások plt.title('Aszteroida és a Föld pályájának modellezése') plt.xlabel('X pozíció (AU)') plt.ylabel('Y pozíció (AU)') plt.axhline(0, color='grey', linestyle=':', alpha=0.5) plt.axvline(0, color='grey', linestyle=':', alpha=0.5) plt.legend() plt.grid(True, linestyle='--', alpha=0.6) plt.axis('equal') # Megjelenítés plt.show()

--------------
----------------
--- Pályaszámítási Eredmények --- A Föld és az aszteroida pályájának legkisebb távolsága: 0.0009 AU Ez kb. 130526 kilométernek felel meg.



Nincsenek megjegyzések:

Megjegyzés küldése