Zpět na domů

Python, SPARC a TVERK: Nový model proti temné hmotě

Výzkum s Pythonem a daty SPARC nabízí novou hypotézu TVERK, která vysvětluje kinematiku 175 galaxií bez temné hmoty. Analýza a kód pro middle/senior vývojáře.

Python a TVERK: Alternativa temné hmotě v galaktické dynamice
Advertisement 728x90

Fotonové vlnění namísto temné hmoty: Jak Python a SPARC přepisují zákony galaktické kinematiky

Problém temné hmoty zůstává po desetiletí jednou z ústředních záhad moderní astrofyziky. Klasické modely galaktické dynamiky vyžadují zavedení neviditelné substance, aby vysvětlily anomálně vysoké rychlosti rotace hvězd na periferii galaxií. Přístup, který vyžaduje individuální přizpůsobení parametrů této hypotetické hmoty pro každou galaxii, však vyvolává otázky ohledně fundamentálnosti takového řešení. Nezávislý výzkumník Pavel navrhl radikálně novou hypotézu – Teorii Vibračně-Energetického Rezonančního Kontinua (TVERK), která popisuje vesmír jako médium podléhající přísným zákonům mechaniky kontinua a nelineární hydrodynamiky. Pro ověření této ambiciózní myšlenky byl vyvinut výpočetní experiment s využitím Pythonu a otevřených astrofyzikálních dat, jehož cílem bylo modelování kinematiky 175 galaxií bez zapojení konceptu temné hmoty.

Problém temné hmoty a alternativní hypotéza TVERK

Základem astrofyzikálního modelu galaxií je gravitační interakce viditelné hmoty. Pozorování však ukazují, že vnější oblasti galaxií rotují podstatně rychleji, než tyto modely předpovídají. Pro sladění teorie s pozorováním byla postulována temná hmota – neviditelná substance, která tvoří většinu hmoty vesmíru. Hlavní problém spočívá v tom, že parametry halo temné hmoty je nutné individuálně přizpůsobovat pro každou galaxii. To poukazuje na potenciální omezení současné paradigmy a stimuluje hledání alternativních vysvětlení.

Hypotéza TVERK nabízí kvalitativně odlišný přístup. Namísto částic temné hmoty se zavádí pojem husté „akustické podušky“, tvořené pružným vlněním vakua. Toto vlnění je generováno hvězdami po miliardy let a lokálně zvyšuje opticko-mechanickou viskozitu prostoru. V důsledku toho se galaxie začne otáčet jako celek a její kinematika se řídí univerzálními, škálovatelnými zákony difúze vlnové energie v tomto „viskózním“ prostředí. Takový přístup umožňuje opustit individuální přizpůsobení parametrů a přejít k jednotnému fyzikálnímu modelu pro všechny galaxie.

Google AdInline article slot

Výpočetní experiment s databází SPARC

Pro ověření hypotézy TVERK byl vyvinut výpočetní experiment, který využívá reálná astrofyzikální data. Jako základ byla použita otevřená databáze SPARC (Spitzer Photometry and Accurate Rotation Curves), která obsahuje vysoce přesná fotometrická data a rotační křivky pro 175 galaxií různých morfologických typů – od masivních spirálních po trpasličí nepravidelné. Tato databáze je zlatým standardem pro studium dynamiky galaxií.

Hlavním úkolem experimentu bylo nalezení jednotného, univerzálního souboru 19 makroskopických parametrů 3D prostředí, které by dokázaly popsat kinematiku všech 175 galaxií současně. Tyto parametry zahrnují takové charakteristiky prostředí, jako je základní tuhost vakua, gradienty útlumu vlnové energie, násobiče vlnění a další. Pro řešení tohoto složitého optimalizačního úkolu byl použit algoritmus scipy.optimize.differential_evolution z knihovny SciPy – výkonná metoda globální optimalizace, schopná nalézt optimální řešení ve vícerozměrných prostorech parametrů. Optimalizátor byl nastaven tak, aby minimalizoval odchylky mezi predikovanými rotačními křivkami TVERK a pozorovanými daty, přičemž zachovával fyzikální smysluplnost každého parametru prostřednictvím pevných hranic (BOUNDS).

Implementace v Pythonu: Optimalizátor a fyzikální model TVERK

Implementace výpočetního experimentu byla provedena v jazyce Python, který je díky svým knihovnám pro vědecké výpočty (numpy, scipy, matplotlib) ideální pro podobné úkoly. Proces začínal automatickým stažením databáze SPARC, pokud lokálně chyběla, což zajišťovalo reprodukovatelnost experimentu. Poté byl inicializován optimalizátor s definovanými fyzikálními omezeními pro každý z 19 parametrů. Tato omezení jsou důležitá, aby nalezené parametry měly fyzikální smysl a nepřekračovaly rozumné limity.

Google AdInline article slot

Příklad kódu optimalizátoru, demonstrující proces inicializace a definování hranic parametrů:

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

import os
import subprocess

print("=== STAGE 1: SPARC DATABASE DOWNLOADING ===")
# Automatické a bezpečné stahování databáze
if not os.path.exists('sparc-json'):
    print("Stahování agregované databáze SPARC (sparc_full.json)...")
    subprocess.run(["git", "clone", "https://github.com/wohlig/sparc-json.git"])
    print("Hotovo! Databáze úspěšně stažena.\n")
else:
    print("Databáze již existuje. Stahování přeskočeno.\n")

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

warnings.filterwarnings("ignore")

print("=== TVERC UNIFIED MODEL: V10.1 STRICT PHYSICS OPTIMIZER ===")
print("Mode: 175 galaxies. Physical penalties active. 5% outlier trimming.")

# ==============================================================================
# PŘÍSNÉ FYZIKÁLNÍ HRANICE (19 PARAMETRŮ)
# ==============================================================================
BOUNDS = [
    (1.0, 15.0),          # 0: initial_phi (Omezeno adekvátním napětím vakua)
    (0.0005, 15.0),       # 1: coupling (Interakce hmota-vakuum)
    (0.0, 50.0),          # 2: base_kinetic_push (Kinematický posun max 50 km/s)
    (0.1, 3.0),           # 3: gas_ripple_multiplier (Násobič volatility plynu)
    (2.0, 20.0),          # 4: halo_radius_multiplier (Halo 2-20x větší než disk)
    (1.0, 10.0),          # 5: a_scale_divisor (Tvar úbytku hustoty)
    (0.3, 0.85),          # 6: M_L_disk_base (FYZIKA: Disk M/L v IR pásmu ~0.5)
    (1e-6, 0.5),          # 7: min_scattering 
    (0.1, 1.5),           # 8: phi_exponent (Exponent útlumu pole)
    (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 (FYZIKA: Jádro má starší hvězdy, vyšší M/L)
    (-0.3, 0.3),          # 13: ml_gradient (Hladký gradient hvězdné populace)
    (5.0, 25.0),          # 14: disp_center (Disperze plynu v jádře 5-25 km/s)
    (2.0, 12.0),          # 15: disp_edge (Minimální disperze na okraji ~2 km/s)
    (0.5, 3.0),           # 16: disp_scale (Rychlost úbytku disperze)
    (0.3, 1.0),           # 17: bulge_flattening (FYZIKA: Jádro je 3D elipsoid)
    (0.0, 0.5)            # 18: thermal_halo_coupling 

Po provedení optimalizace, která může trvat značnou dobu (více než 3 hodiny), se získaný soubor 19 univerzálních parametrů použije pro přímý výpočet rotačních křivek. Tento proces je demonstrován v následujícím fragmentu kódu, který inicializuje model TVERK s již nalezenými parametry a obsahuje jádro fyzikálního enginu:

# ==============================================================================
# TVERC KINEMATIC VISUALIZER: 12 GALAXY GRID
# ==============================================================================
# Automaticky stáhnout databázi SPARC
import os
if not os.path.exists('sparc-json'):
    print("Stahuji databázi 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=== TVERC KINEMATIC VISUALIZER: FORWARD CALCULATION ===")

# ==============================================================================
# 19 UNIVERZÁLNÍCH PARAMETRŮ TVERK (Odvozeno z Run 1 Baseline)
# ==============================================================================
# Každý parametr představuje základní makroskopickou vlastnost 3D kontinua
best_params = [
    14.4842,    # 0: initial_phi (Základní skalár napětí vakua)
    13.4859,    # 1: coupling (Konstanta interakce hmota-vakuum)
    6.7855,     # 2: base_kinetic_push (Ponderomotorický posun zrychlení, km/s)
    1.3480,     # 3: gas_ripple_multiplier (Termodynamická volatilita mezihvězdného plynu)
    19.9079,    # 4: halo_radius_multiplier (Škálování hranice vlnového hala vzhledem k disku)
    2.4916,     # 5: a_scale_divisor (Faktor tvaru radiálního gradientu přechodové zóny)
    0.5702,     # 6: M_L_disk_base (Poměr hmotnosti k zářivosti pro hvězdný disk)
    0.0000146,  # 7: min_scattering (Absolutní dolní limit rozptylu vln v prázdnotě)
    0.8768299,  # 8: phi_exponent (Exponent prostorového úbytku pole napětí)
    0.3786,     # 9: k_ripple_base (Fundamentální vlnové číslo pro tepelné vlnění)
    3.3008619,  # 10: rho_sup_scale (Hustotní práh pro vysokofrekvenční tlumení)
    0.4823863,  # 11: rho_sup_power (Mocnina prahu tlumení hustoty)
    0.5949,     # 12: M_L_bulge (Poměr hmotnosti k zářivosti pro starší centrální jádro)
    -0.1827,    # 13: ml_gradient (Hladký radiální úbytek hustoty hvězdné hmoty)
    5.3,        # 14: disp_center (Disperze rychlosti plynu v jádře, km/s)
    2.4,        # 15: disp_edge (Disperze rychlosti plynu na periferii, km/s)
    2.2334,     # 16: disp_scale (Exponenciální škála úbytku disperze plynu)
    0.8531,     # 17: bulge_flattening (Geometrická zploštělost 3D jádra)
    0.2692      # 18: thermal_halo_coupling (Frakce tepelné energie napájející halo)
]

# ==============================================================================
# JÁDRO FYZIKÁLNÍHO ENGINU TVERK
# ==============================================================================
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_

Výsledky a jejich fyzikální interpretace

Nejpůsobivějším výsledkem výpočetního experimentu bylo, že algoritmus differential_evolution úspěšně konvergoval a nalezl jednotný soubor 19 univerzálních parametrů, schopných popsat kinematiku 175 naprosto odlišných galaxií. Průměrná absolutní chyba (MAPE) mezi vypočtenými rotačními křivkami TVERK a reálnými daty z teleskopů činila pouhých 15.59%. Pro tak široký výběr galaxií a použití jednotného modelu prostředí je taková přesnost vynikajícím úspěchem a demonstruje potenciál hypotézy TVERK. To znamená, že není nutné zavádět individuální parametry temné hmoty pro každou galaxii; namísto toho může být její dynamika vysvětlena fundamentálními vlastnostmi samotného časoprostorového prostředí.

Google AdInline article slot

Klíčové aspekty výsledků:

  • Univerzálnost: Jednotný soubor parametrů popisuje galaxie všech typů, od obřích spirálních po trpasličí nepravidelné. To ostře kontrastuje s přístupy založenými na temné hmotě, kde je nutné parametry přizpůsobovat individuálně.
  • Přesnost: Průměrná chyba 15.59% pro tak složitý a rozmanitý systém, jako jsou galaxie, svědčí o vysoké prediktivní síle modelu.
  • Fyzikální interpretace: Každý z 19 parametrů má jasný fyzikální význam, popisující vlastnosti vakua, interakci hmoty s ním, a také kinematické a termodynamické charakteristiky plynu a hvězdných populací. Například initial_phi představuje základní napětí vakua a coupling – konstantu interakce hmoty a vakua.
  • Absence temné hmoty: Model TVERK úspěšně vysvětluje ploché rotační křivky galaxií bez zapojení hypotetických částic temné hmoty, nabízející alternativní mechanismus prostřednictvím vlnových vlastností vakua.

Tento výsledek nejen zpochybňuje zavedené představy o temné hmotě, ale také otevírá nové perspektivy pro pochopení fundamentálních zákonů vesmíru. Hypotéza TVERK také naznačuje možnost „slyšet“ rezonanční hukot černých děr, což, jak bylo zmíněno v původním materiálu, bylo ověřeno na datech z interferometrů LIGO, čímž se rozšiřuje oblast použitelnosti teorie za rámec dynamiky galaxií.

Co je důležité

  • Nové paradigma v astrofyzice: Hypotéza TVERK navrhuje opuštění temné hmoty ve prospěch modelu vesmíru jako prostředí, které se řídí zákony mechaniky kontinua.
  • Komplexní modelování: Pomocí Pythonu a algoritmu scipy.optimize.differential_evolution byla úspěšně modelována kinematika 175 galaxií na základě jednotného souboru 19 univerzálních fyzikálních parametrů.
  • Vysoká přesnost: Model TVERK vykázal průměrnou absolutní chybu 15.59% při popisu rotačních křivek galaxií z databáze SPARC, což potvrzuje jeho prediktivní sílu.
  • Univerzálnost parametrů: Na rozdíl od modelů s temnou hmotou, TVERK používá jeden soubor makroskopických parametrů k vysvětlení dynamiky všech typů galaxií, což poukazuje na fundamentálnost navržených zákonů.
  • Potenciál rozšíření: Teorie se také vztahuje na jevy spojené s černými dírami, což je potvrzeno analýzou dat LIGO.

— Editorial Team

Advertisement 728x90

Číst dál