Powrót do strony głównej

Python, SPARC i TVERK: Nowy model przeciwko Ciemnej materii

Badanie z Pythonem i danymi SPARC proponuje nową hipotezę TVERK, wyjaśniającą kinematykę 175 galaktyk bez Ciemnej materii. Analiza i kod dla middle/senior deweloperów.

Python i TVERK: Alternatywa Ciemnej materii w dynamice galaktycznej
Advertisement 728x90

Fotonowe Zmarszczki kontra Ciemna Materia: Python i SPARC redefiniują kinematykę galaktyk

Problem Ciemnej Materii od dziesięcioleci pozostaje jedną z centralnych zagadek współczesnej astrofizyki. Klasyczne modele dynamiki galaktycznej wymagają wprowadzenia niewidzialnej substancji, aby wyjaśnić anomalnie wysokie prędkości rotacji gwiazd na peryferiach galaktyk. Jednak podejście, które wymaga indywidualnego dopasowania parametrów tej hipotetycznej materii dla każdej galaktyki, budzi pytania o fundamentalność takiego rozwiązania. Niezależny badacz Paweł zaproponował radykalnie nową hipotezę — Teorię Wibracyjno-Energetycznego Rezonansowego Kontinuum (TWERK), która opisuje Wszechświat jako ośrodek podlegający ścisłym prawom mechaniki kontinuum i nieliniowej hydrodynamiki. Aby zweryfikować tę ambitną ideę, opracowano eksperyment obliczeniowy z wykorzystaniem Pythona i otwartych danych astrofizycznych, którego celem było modelowanie kinematyki 175 galaktyk bez odwoływania się do koncepcji Ciemnej Materii.

Problem Ciemnej Materii i alternatywna hipoteza TWERK

Podstawą astrofizycznej modelu galaktyk jest grawitacyjne oddziaływanie widzialnej materii. Jednak obserwacje pokazują, że zewnętrzne obszary galaktyk rotują znacznie szybciej, niż przewidują te modele. Aby pogodzić teorię z obserwacjami, postulowano istnienie Ciemnej Materii — niewidzialnej substancji, stanowiącej większość masy Wszechświata. Główny problem polega na tym, że parametry halo Ciemnej Materii muszą być dobierane indywidualnie dla każdej galaktyki. Wskazuje to na potencjalne ograniczenia obecnego paradygmatu i stymuluje poszukiwanie alternatywnych wyjaśnień.

Hipoteza TWERK proponuje jakościowo inne podejście. Zamiast cząstek Ciemnej Materii wprowadza pojęcie gęstej „poduszki akustycznej”, utworzonej przez elastyczne falowanie próżni. To falowanie jest generowane przez gwiazdy przez miliardy lat i lokalnie zwiększa optyczno-mechaniczną lepkość przestrzeni. W rezultacie galaktyka zaczyna rotować jako całość, a jej kinematyka podlega uniwersalnym, skalowalnym prawom dyfuzji energii falowej w tym „lepkim” ośrodku. Takie podejście pozwala zrezygnować z indywidualnego dopasowywania parametrów i przejść do jednolitego modelu fizycznego dla wszystkich galaktyk.

Google AdInline article slot

Eksperyment obliczeniowy z bazą SPARC

Do weryfikacji hipotezy TWERK opracowano eksperyment obliczeniowy, wykorzystujący rzeczywiste dane astrofizyczne. Za podstawę przyjęto otwartą bazę danych SPARC (Spitzer Photometry and Accurate Rotation Curves), która zawiera precyzyjne dane fotometryczne i krzywe rotacji dla 175 galaktyk różnych typów morfologicznych — od masywnych spiralnych po karłowate nieregularne. Ta baza danych jest złotym standardem do badania dynamiki galaktyk.

Główne zadanie eksperymentu polegało na znalezieniu jednego, uniwersalnego zestawu 19 makroskopowych parametrów środowiska 3D, które mogłyby opisać kinematykę wszystkich 175 galaktyk jednocześnie. Parametry te obejmują takie charakterystyki środowiska jak podstawowa sztywność próżni, gradienty tłumienia energii falowej, mnożniki falowania i inne. Do rozwiązania tego złożonego problemu optymalizacyjnego zastosowano algorytm scipy.optimize.differential_evolution z biblioteki SciPy — potężną metodę optymalizacji globalnej, zdolną do znajdowania optymalnych rozwiązań w wielowymiarowych przestrzeniach parametrów. Optymalizator został skonfigurowany w taki sposób, aby minimalizować odchylenia między przewidywanymi przez TWERK krzywymi rotacji a obserwowanymi danymi, jednocześnie zachowując fizyczną zasadność każdego parametru poprzez sztywne granice (BOUNDS).

Implementacja w Pythonie: Optymalizator i model fizyczny TWERK

Implementacja eksperymentu obliczeniowego została wykonana w języku Python, który dzięki swoim bibliotekom do obliczeń naukowych (numpy, scipy, matplotlib) idealnie nadaje się do tego typu zadań. Proces rozpoczynał się od automatycznego pobierania bazy danych SPARC, jeśli nie była dostępna lokalnie, co zapewniało powtarzalność eksperymentu. Następnie inicjowano optymalizator z zadanymi ograniczeniami fizycznymi dla każdego z 19 parametrów. Ograniczenia te są ważne, aby znalezione parametry miały sens fizyczny i nie wykraczały poza rozsądne granice.

Google AdInline article slot

Przykład kodu optymalizatora, demonstrujący proces inicjalizacji i definiowania granic parametrów:

# === SCRIPT 1: TVERC AUTO-OPTIMIZER V10.1 (STRICT PHYSICS ENGINE) ===

import os
import subprocess

print("=== ETAP 1: POBIERANIE BAZY DANYCH SPARC ===")
# Automatyczne i bezpieczne pobieranie bazy danych
if not os.path.exists('sparc-json'):
    print("Pobieranie zagregowanej bazy SPARC (sparc_full.json)...")
    subprocess.run(["git", "clone", "https://github.com/wohlig/sparc-json.git"])
    print("Gotowe! Baza danych została pomyślnie załadowana.\n")
else:
    print("Baza danych już istnieje. Pomijam pobieranie.\n")

import numpy as np
import matplotlib.pyplot as plt
import json
import warnings
from scipy.optimize import differential_evolution

warnings.filterwarnings("ignore")

print("=== ZUNIFIKOWANY MODEL TWERK: OPTYMALIZATOR ŚCISŁEJ FIZYKI V10.1 ===")
print("Tryb: 175 galaktyk. Aktywne kary fizyczne. Przycinanie 5% wartości odstających.")

# ==============================================================================
# ŚCISŁE GRANICE FIZYCZNE (19 PARAMETRÓW)
# ==============================================================================
BOUNDS = [
    (1.0, 15.0),          # 0: initial_phi (Ograniczone przez odpowiednie napięcie próżni)
    (0.0005, 15.0),       # 1: coupling (Oddziaływanie materia-próżnia)
    (0.0, 50.0),          # 2: base_kinetic_push (Offset kinetyczny maks. 50 km/s)
    (0.1, 3.0),           # 3: gas_ripple_multiplier (Mnożnik zmienności gazu)
    (2.0, 20.0),          # 4: halo_radius_multiplier (Halo większe od dysku 2-20x)
    (1.0, 10.0),          # 5: a_scale_divisor (Kształt zaniku gęstości)
    (0.3, 0.85),          # 6: M_L_disk_base (FIZYKA: M/L dysku w paśmie IR ~0.5)
    (1e-6, 0.5),          # 7: min_scattering 
    (0.1, 1.5),           # 8: phi_exponent (Wykładnik tłumienia pola)
    (0.1, 20.0),          # 9: k_ripple_base 
    (0.01, 5.0),          # 10: rho_sup_scale 
    (0.1, 1.0),           # 11: rho_sup_power 
    (0.4, 1.0),           # 12: M_L_bulge (FIZYKA: Zgrubienie ma starsze gwiazdy, wyższe M/L)
    (-0.3, 0.3),          # 13: ml_gradient (Gładki gradient populacji gwiazdowej)
    (5.0, 25.0),          # 14: disp_center (Dyspersja gazu w centrum 5-25 km/s)
    (2.0, 12.0),          # 15: disp_edge (Minimalna dyspersja na krawędzi ~2 km/s)
    (0.5, 3.0),           # 16: disp_scale (Tempo zaniku dyspersji)
    (0.3, 1.0),           # 17: bulge_flattening (FIZYKA: Zgrubienie to elipsoida 3D)
    (0.0, 0.5)            # 18: thermal_halo_coupling 

Po wykonaniu optymalizacji, która może zająć znaczną ilość czasu (ponad 3 godziny), uzyskany zestaw 19 uniwersalnych parametrów jest wykorzystywany do bezpośredniego obliczania krzywych rotacji. Proces ten jest demonstrowany w poniższym fragmencie kodu, który inicjalizuje model TWERK z już znalezionymi parametrami i zawiera jądro silnika fizycznego:

# ==============================================================================
# WIZUALIZATOR KINEMATYCZNY TWERK: SIATKA 12 GALAKTYK
# ==============================================================================
# Automatyczne pobieranie bazy danych SPARC
import os
if not os.path.exists('sparc-json'):
    print("Pobieranie bazy danych SPARC...")
    os.system('rm -rf sparc-json')
    os.system('git clone https://github.com/wohlig/sparc-json.git')

import numpy as np
import matplotlib.pyplot as plt
import json
import warnings

warnings.filterwarnings('ignore')
print("\n=== WIZUALIZATOR KINEMATYCZNY TWERK: OBLICZENIA W PRZÓD ===")

# ==============================================================================
# 19 UNIWERSALNYCH PARAMETRÓW TWERK (Wyprowadzone z Run 1 Baseline)
# ==============================================================================
# Każdy parametr reprezentuje fundamentalną makroskopową właściwość Kontinuum 3D
best_params = [
    14.4842,    # 0: initial_phi (Bazowy skalar napięcia próżni)
    13.4859,    # 1: coupling (Stała oddziaływania materia-próżnia)
    6.7855,     # 2: base_kinetic_push (Offset przyspieszenia ponderomotorycznego, km/s)
    1.3480,     # 3: gas_ripple_multiplier (Termodynamiczna zmienność gazu międzygwiazdowego)
    19.9079,    # 4: halo_radius_multiplier (Skalowanie granicy halo falowego względem dysku)
    2.4916,     # 5: a_scale_divisor (Czynnik kształtu gradientu radialnego strefy przejściowej)
    0.5702,     # 6: M_L_disk_base (Stosunek masy do światła dla dysku gwiazdowego)
    0.0000146,  # 7: min_scattering (Absolutna dolna granica rozpraszania fal w próżni)
    0.8768299,  # 8: phi_exponent (Wykładnik zaniku przestrzennego pola napięcia)
    0.3786,     # 9: k_ripple_base (Fundamentalna liczba falowa dla falowania termicznego)
    3.3008619,  # 10: rho_sup_scale (Próg gęstości dla tłumienia wysokich częstotliwości)
    0.4823863,  # 11: rho_sup_power (Potęga progu tłumienia gęstości)
    0.5949,     # 12: M_L_bulge (Stosunek masy do światła dla starszego centralnego zgrubienia)
    -0.1827,    # 13: ml_gradient (Gładki radialny zanik gęstości masy gwiazdowej)
    5.3,        # 14: disp_center (Dyspersja prędkości gazu w jądrze, km/s)
    2.4,        # 15: disp_edge (Dyspersja prędkości gazu na peryferiach, km/s)
    2.2334,     # 16: disp_scale (Skala wykładniczego zaniku dyspersji gazu)
    0.8531,     # 17: bulge_flattening (Geometryczne spłaszczenie zgrubienia 3D)
    0.2692      # 18: thermal_halo_coupling (Ułamek energii termicznej zasilającej halo)
]

# ==============================================================================
# JĄDRO SILNIKA FIZYCZNEGO TWERK
# ==============================================================================
FIXED_CONFIG = {'alpha': 10e113}

class TVERCGalaxyModel:
    def __init__(self, params):    
        self.alpha = FIXED_CONFIG['alpha']
        self.initial_phi = params[0]
        self.coupling = params[1]
        self.base_push = params[2]
        self.gas_ripple_multiplier = params[3]
        self.halo_multiplier = params[4]
        self.a_scale_divisor = params[5]
        self.ml_disk_base = params[6]
        self.min_scattering = params[7]
        self.phi_exponent = params[8]
        self.k_ripple_base = params[9]
        self.rho_sup_scale = params[10]
        self.rho_sup_power = params[11]
        self.ml_bulge = params[12]
        self.ml_gradient = params[13]
        self.disp_center = params[14]
        self.disp_edge = params[15]
        self.disp_scale = params[16]
        self.bulge_flattening = params[17]
        self.thermal_coupling = params[18]
        self.v_phi_base = 299792.458

    def get_static_tension_energy(self, phi_val):
        return (3.0 / (2.0 * self.alpha)) * (1.0 - 1.0 / (1.0 + self.alpha * phi_val**2))

    def effective_ripple_energy_density(self, phi_val, rho_eff, grad_sq):
        local_k_ripple = self.k_ripple_base / (1.0 + (rho_eff / self.rho_sup_scale))
        local_k_ripple = np.maximum(local_k_ripple, 1.0) 
        v_eff_local = self.v_phi_base / (local_k_ripple * 124.1)
        retention_factor = 1.0 / (1.0 + (rho_eff / self.rho_sup_scale)**self.rho_sup_power)
        effective_factor = np.maximum(retention_factor, self.min_scattering)
        u_static = self.get_static_tension_energy(phi_val)
        u_coupling = 0.5 * self.coupling * rho_eff * phi_val**2
        kinetic_energy = 0.5 * v_eff_local**2 * grad_sq
        return kinetic_energy + (u_static + u_coupling) * effective_factor

G = 4.30091e-6 

def process_galaxy_json(galaxy_data, tverc_model):
    raw_array = np.array(galaxy_data['data'])
    R, V_obs, V_gas_raw = raw_array[:, 0], raw_array[:, 1], np.abs(raw_array[:, 3])     
    V_disk, V_bulge = raw_array[:, 4], raw_array[:, 5]  
    valid = R > 0
    R, V_obs, V_gas_raw, V_disk, V_bulge = R[valid], V_obs[valid], V_gas_raw[valid], V_disk[valid], V_bulge[valid]

    M_stars_raw = R * (V_disk**2 * 0.2) / G
    idx_half = np.searchsorted(M_stars_raw, M_stars_raw[-1]/2) if M_stars_raw[-1] > 0 else -1
    R_eff_raw = R[min(idx_half, len(R)-1)] if M_stars_raw[-1] > 0 else max(R[-1]/2, 1.0)
    
    V_dispersion = tverc_model.disp_center * np.exp(-R / (R_eff_raw * tverc_model.disp_scale)) + tverc_model.disp_edge
    V_gas = np.sqrt(V_gas_raw**2 + V_dispersion**2)

    surf_dens_approx = M_stars_raw[-1] / (R_eff_raw**2)
    dyn_ml_disk = tverc_model.ml_disk_base * (np.maximum(surf_dens_approx / 1e8, 0.1))**tverc_model.ml_gradient

    M_disk_R = R * (V_disk**2 * dyn_ml_disk) / G
    M_bulge_R = R * (V_bulge**2 * tverc_model.ml_bulge) / G
    M_gas_R = R * V_gas**2 / G
    
    rho_disk, rho_bulge, rho_gas = np.zeros_like(R), np.zeros_like(R), np.zeros_like(R)
    V_sph_0 = (4/3) * np.pi * R[0]**3
    rho_disk[0], rho_bulge[0], rho_gas[0] = M_disk_R[0]/V_sph_0, M_bulge_R[0]/(V_sph_0*tverc_model.bulge_flattening), M_gas_R[0]/V_sph_0
    
    for j in range(1, len(R)):
        dV = (4/3) * np.pi * (R[j]**3 - R[j-1]**3)
        if dV > 0:
            rho_disk[j] = np.maximum((M_

Wyniki i ich fizyczna interpretacja

Najbardziej imponującym rezultatem eksperymentu obliczeniowego było to, że algorytm differential_evolution z powodzeniem zbiegł się, znajdując jeden zestaw 19 uniwersalnych parametrów, zdolnych opisać kinematykę 175 absolutnie różnych galaktyk. Średni bezwzględny błąd (MAPE) między obliczonymi krzywymi rotacji TWERK a rzeczywistymi danymi teleskopów wyniósł zaledwie 15.59%. Dla tak szerokiej próbki galaktyk i zastosowania jednolitego modelu środowiska, taka dokładność jest wybitnym osiągnięciem i demonstruje potencjał hipotezy TWERK. Oznacza to, że nie ma potrzeby wprowadzania indywidualnych parametrów Ciemnej Materii dla każdej galaktyki; zamiast tego jej dynamika może być wyjaśniona fundamentalnymi właściwościami samego środowiska czasoprzestrzennego.

Google AdInline article slot

Kluczowe aspekty wyników:

  • Uniwersalność: Jeden zestaw parametrów opisuje galaktyki wszystkich typów, od gigantycznych spiralnych po karłowate nieregularne. Stanowi to ostry kontrast w stosunku do podejść opartych na Ciemnej Materii, gdzie parametry muszą być dopasowywane indywidualnie.
  • Dokładność: Średni błąd wynoszący 15.59% dla tak złożonego i zróżnicowanego systemu, jakim są galaktyki, świadczy o wysokiej sile predykcyjnej modelu.
  • Interpretacja fizyczna: Każdy z 19 parametrów ma jasne znaczenie fizyczne, opisując właściwości próżni, oddziaływanie materii z nią, a także kinematyczne i termodynamiczne charakterystyki gazu i populacji gwiazdowych. Na przykład, initial_phi reprezentuje bazowe napięcie próżni, a coupling — stałą oddziaływania materii i próżni.
  • Brak Ciemnej Materii: Model TWERK z powodzeniem wyjaśnia płaskie krzywe rotacji galaktyk bez odwoływania się do hipotetycznych cząstek Ciemnej Materii, oferując alternatywny mechanizm poprzez falowe właściwości próżni.

Ten wynik nie tylko podważa ugruntowane poglądy na temat Ciemnej Materii, ale także otwiera nowe perspektywy dla zrozumienia fundamentalnych praw Wszechświata. Hipoteza TWERK sugeruje również możliwość „usłyszenia” rezonansowego szumu czarnych dziur, co, jak wspomniano w oryginalnym materiale, zostało zweryfikowane na danych z interferometrów LIGO, rozszerzając obszar zastosowania teorii poza dynamikę galaktyk.

Co ważne

  • Nowy paradygmat w astrofizyce: Hipoteza TWERK proponuje odejście od Ciemnej Materii na rzecz modelu Wszechświata jako ośrodka podlegającego prawom mechaniki kontinuum.
  • Kompleksowe modelowanie: Za pomocą Pythona i algorytmu scipy.optimize.differential_evolution z powodzeniem zamodelowano kinematykę 175 galaktyk na podstawie jednego zestawu 19 uniwersalnych parametrów fizycznych.
  • Wysoka dokładność: Model TWERK wykazał średni bezwzględny błąd wynoszący 15.59% w opisie krzywych rotacji galaktyk z bazy SPARC, co potwierdza jego siłę predykcyjną.
  • Uniwersalność parametrów: W przeciwieństwie do modeli z Ciemną Materią, TWERK wykorzystuje jeden zestaw makroskopowych parametrów do wyjaśnienia dynamiki wszystkich typów galaktyk, co wskazuje na fundamentalność proponowanych praw.
  • Potencjał rozszerzenia: Teoria obejmuje również zjawiska związane z czarnymi dziurami, co potwierdza analiza danych LIGO.

— Editorial Team

Advertisement 728x90

Czytaj dalej