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()
---------------
Nincsenek megjegyzések:
Megjegyzés küldése