ORT: Zwaartekracht Gevorderd#
Hoofdstuk 12, deel 2 | §12.15–12.21, §12.26–12.27 | Formules 40–65, 82–103
Dit notebook behandelt de gevorderde zwaartekrachtseffecten: Reissner-Nordström (geladen massa), Shapiro-vertraging, geodetische precessie, fotonsfeer, Einstein-ringen, de S2-ster, zwaartekrachtsgolven en de Kerr-metriek.
import sys, pathlib
sys.path.insert(0, str(pathlib.Path().resolve().parent / 'shared'))
from ort_core import *
from ort_plots import (cosmological_shell_diagram, gw_strain_plot, gw_inspiral_interactive,
kerr_geometry_plot, kerr_frame_drag_field, isco_comparison_plot, comparison_table,
photon_sphere_shadow, einstein_ring_plot)
import matplotlib.pyplot as plt
import math
import numpy as np
%matplotlib inline
§12.15 — Reissner-Nordström (geladen massa)#
De metriekfunctie met ladingsterm:
met \(r_Q^2 = k_e Q^2 G / c^4\).
Twee horizonten:
Extremale lading (\(r_+ = r_-\)):
Lading counteract zwaartekracht: lichtafbuiging, precissie, \(v_{grav}\) nemen af.
# Reissner-Nordström: vergelijking Schwarzschild vs geladen
M_BH = 10 * M_SUN
bh_sch = GravityModel(M_BH) # Ongeladen
Q_ext = bh_sch.extremal_charge()
bh_half = GravityModel(M_BH, charge=0.5 * Q_ext) # Halve extremale lading
bh_ext = GravityModel(M_BH, charge=0.99 * Q_ext) # Bijna extremaal
print(f"=== Reissner-Nordström (10 M☉) ===")
print(f"r_s = {bh_sch.rs:.3e} m")
print(f"Q_ext = {Q_ext:.3e} C")
print()
for label, model in [("Q = 0 (Schwarzschild)", bh_sch),
("Q = 0.5 Q_ext", bh_half),
("Q = 0.99 Q_ext", bh_ext)]:
r_plus = model.r_plus
r_minus = model.r_minus
print(f"--- {label} ---")
print(f" r+ = {r_plus:.3e} m = {r_plus/bh_sch.rs:.4f} r_s")
print(f" r- = {r_minus:.3e} m = {r_minus/bh_sch.rs:.4f} r_s")
# Lichtafbuiging bij b = 10 r_s
b = 10 * bh_sch.rs
alpha = model.light_deflection_arcsec(b)
print(f" Lichtafbuiging (b=10r_s): {alpha:.6f}\"")
print()
=== Reissner-Nordström (10 M☉) ===
r_s = 2.954e+04 m
Q_ext = 1.714e+21 C
--- Q = 0 (Schwarzschild) ---
r+ = 2.954e+04 m = 1.0000 r_s
r- = 0.000e+00 m = 0.0000 r_s
Lichtafbuiging (b=10r_s): 41252.961249"
--- Q = 0.5 Q_ext ---
r+ = 2.756e+04 m = 0.9330 r_s
r- = 1.979e+03 m = 0.0670 r_s
Lichtafbuiging (b=10r_s): 40949.211249"
--- Q = 0.99 Q_ext ---
r+ = 1.685e+04 m = 0.5705 r_s
r- = 1.269e+04 m = 0.4295 r_s
Lichtafbuiging (b=10r_s): 40062.139749"
§12.16 — Shapiro-vertraging#
De vierde klassieke test van de ART. Een signaal nabij een massa doet er langer over:
Met ladingscorrectie (RN):
Net als bij lichtafbuiging: 50/50 temporeel + ruimtelijk.
# Shapiro-vertraging: Cassini-meting
b_cassini = 1.6 * R_SUN # impactparameter
r_earth = A_EARTH_ORBIT # Aarde-Zon afstand
r_saturn = R_SATURN_ORBIT # Saturnus-Zon afstand
delay = SUN.shapiro_delay(r_earth, r_saturn, b_cassini)
delay_us = delay * 1e6
delay_roundtrip = SUN.shapiro_delay_roundtrip(r_earth, r_saturn, b_cassini)
# Alleen temporeel (helft)
delay_half = SUN.half_shapiro_delay(r_earth, r_saturn, b_cassini)
print("=== Shapiro-vertraging (Cassini) ===")
print(f"b = {b_cassini/R_SUN:.1f} R_zon = {b_cassini:.3e} m")
print(f"r₁ (Aarde) = {r_earth:.3e} m")
print(f"r₂ (Saturnus) = {r_saturn:.3e} m")
print()
print(f"Alleen temporeel (helft): {delay_half*1e6:.2f} µs")
print(f"Volledig (temp+ruimt): {delay_us:.2f} µs")
print(f"Rondtrip: {delay_roundtrip*1e6:.2f} µs")
print()
print(f"Cassini resultaat (2003): γ = 1 + (2.1 ± 2.3) ·10⁻⁵")
=== Shapiro-vertraging (Cassini) ===
b = 1.6 R_zon = 1.113e+09 m
r₁ (Aarde) = 1.496e+11 m
r₂ (Saturnus) = 1.434e+12 m
Alleen temporeel (helft): 66.26 µs
Volledig (temp+ruimt): 132.51 µs
Rondtrip: 265.03 µs
Cassini resultaat (2003): γ = 1 + (2.1 ± 2.3) ·10⁻⁵
# Newton vs ORT: Shapiro-vertraging
# Newton voorspelt GEEN vertraging — lichtsnelheid is constant en overal gelijk!
print("=== Newton vs ORT: Shapiro-vertraging (Cassini) ===")
print(f" Newton: 0.00 µs (licht reist met constante snelheid)")
print(f" ORT/Einstein: {delay_us:.2f} µs (licht vertraagt nabij massa)")
print(f" Cassini 2003: bevestigd met nauwkeurigheid 0.002%")
print()
print(f"Het signaal moet 'extra ruimte' doorkruisen (ruimtelijke uitrekking)")
print(f"én vertraagt door gravitationele tijddilatatie — elk 50% van het effect.")
=== Newton vs ORT: Shapiro-vertraging (Cassini) ===
Newton: 0.00 µs (licht reist met constante snelheid)
ORT/Einstein: 132.51 µs (licht vertraagt nabij massa)
Cassini 2003: bevestigd met nauwkeurigheid 0.002%
Het signaal moet 'extra ruimte' doorkruisen (ruimtelijke uitrekking)
én vertraagt door gravitationele tijddilatatie — elk 50% van het effect.
§12.17 — Geodetische (de Sitter) precessie#
De draaiingsas van een gyroscoop precideert in een baan rond een massa:
Zwak-veldbenadering:
Met ladingscorrectie (RN):
De 1/3 + 2/3 verdeling#
In tegenstelling tot de andere effecten (50/50):
1/3 — Thomas-precessie (SRT, temporeel)
2/3 — Ruimtekromming (GR, ruimtelijk)
Effect |
Temporeel |
Ruimtelijk |
Verhouding |
|---|---|---|---|
Lichtafbuiging |
50% |
50% |
1:1 |
Shapiro-vertraging |
50% |
50% |
1:1 |
Baanprecissie |
50% |
50% |
1:1 |
Geodetische precessie |
33% |
67% |
1:2 |
# Geodetische precessie: Gravity Probe B
gpb_period = EARTH.orbital_period(GPB_ORBIT_RADIUS)
gpb_prec = EARTH.geodetic_precession(GPB_ORBIT_RADIUS)
gpb_mas_yr = EARTH.geodetic_precession_mas_per_year(GPB_ORBIT_RADIUS, gpb_period)
print("=== Geodetische precessie — Gravity Probe B ===")
print(f"Baanhoogte: 642 km (r = {GPB_ORBIT_RADIUS:.3e} m)")
print(f"Baanperiode: {gpb_period:.1f} s = {gpb_period/60:.1f} min")
print(f"\nΔθ per omloop = {gpb_prec:.6e} rad")
print(f"Δθ per jaar = {gpb_mas_yr:.1f} mas/jr")
print(f"\nVoorspeld (ART): 6606.1 mas/jr")
print(f"Gemeten (GP-B): 6601.8 ± 18.3 mas/jr")
print()
# 1/3 + 2/3 verdeling
thomas = gpb_mas_yr / 3
curvature = 2 * gpb_mas_yr / 3
print(f"Thomas-bijdrage (1/3): {thomas:.1f} mas/jr")
print(f"Krommingsbijdrage (2/3): {curvature:.1f} mas/jr")
=== Geodetische precessie — Gravity Probe B ===
Baanhoogte: 642 km (r = 7.013e+06 m)
Baanperiode: 5844.8 s = 97.4 min
Δθ per omloop = 5.960071e-09 rad
Δθ per jaar = 6637.5 mas/jr
Voorspeld (ART): 6606.1 mas/jr
Gemeten (GP-B): 6601.8 ± 18.3 mas/jr
Thomas-bijdrage (1/3): 2212.5 mas/jr
Krommingsbijdrage (2/3): 4425.0 mas/jr
# Newton vs ORT: geodetische precessie
# Newton voorspelt GEEN precessie van een gyroscoop-as — ruimte is plat!
print("=== Newton vs ORT: geodetische precessie (Gravity Probe B) ===")
print(f" Newton: 0.0 mas/jr (ruimte is plat, geen precessie)")
print(f" ORT/Einstein: {gpb_mas_yr:.1f} mas/jr")
print(f" GP-B (2011): 6601.8 ± 18.3 mas/jr (gemeten!)")
print()
print(f"Dit effect kostte NASA 750 miljoen dollar en 47 jaar om te meten.")
print(f"Resultaat: perfecte overeenkomst met ART/ORT — Newton faalt volledig.")
=== Newton vs ORT: geodetische precessie (Gravity Probe B) ===
Newton: 0.0 mas/jr (ruimte is plat, geen precessie)
ORT/Einstein: 6637.5 mas/jr
GP-B (2011): 6601.8 ± 18.3 mas/jr (gemeten!)
Dit effect kostte NASA 750 miljoen dollar en 47 jaar om te meten.
Resultaat: perfecte overeenkomst met ART/ORT — Newton faalt volledig.
§12.18 — Modelvergelijking#
Zes modellen, tien effecten — de eerlijkheidstabel.
Legenda: ✓ correct, ½ halve waarde, ✗ geen voorspelling, — n.v.t., ⚠ beperkt
# Modelvergelijkingstabel
comparison_table(lang='nl')
Eerlijkheidstabel: zes modellen, tien effecten
| Effect | Newton | Michell/Laplace | Soldner/Einstein 1911 | ART (1915) | ORT | Thomas |
|---|---|---|---|---|---|---|
| Gravitationele tijddilatatie | ✗ | ✗ | ✗ | ✓ | ✓ | — |
| Gravitationele roodverschuiving | ✗ | ✗ | ✗ | ✓ | ✓ | — |
| Lichtafbuiging | ✗ | ✗ | ½ | ✓ | ✓ | — |
| Baanprecissie | ✗ | ✗ | ✗ | ✓ | ✓ | — |
| Shapiro-vertraging | ✗ | ✗ | ½ | ✓ | ✓ | — |
| Geodetische precessie | ✗ | ✗ | ✗ | ✓ | ✓ | ⅓ |
| Eventhorizon | v_esc | r=2GM/c² | — | ✓ | ✓ | — |
| BH-interieur | — | — | — | ✓ | ✓ | — |
| Frame-dragging | ✗ | ✗ | ✗ | ✓ | ✓ | — |
| Zwaartekrachtsgolven | ✗ | ✗ | ✗ | ✓ | ✓ | — |
| Kosmologie | ✗ | ✗ | ✗ | ✓ | ⚠ | — |
§12.19 — Fotonsfeer en zwart-gatschaduw (EHT)#
De fotonsfeer is de straal waarop fotonen in een (instabiele) cirkelbaan draaien:
Voor RN:
De schaduwstraal (kritische impactparameter):
Voor Schwarzschild: \(b_{crit} = \frac{3\sqrt{3}}{2} r_s \approx 2.598\, r_s\)
De hoekdiameter van de schaduw:
# Fotonsfeer en schaduw visualisatie
fig = photon_sphere_shadow(lang='nl')
plt.show()
# Schaduwgrootte M87* en Sgr A*
print("=== Zwart-gatschaduwen (EHT) ===")
print()
for name, model, dist in [("M87*", M87_STAR, D_M87_STAR),
("Sgr A*", SGR_A_STAR, D_SGR_A_STAR)]:
r_ph = model.photon_sphere()
b_crit = model.shadow_radius()
theta_uas = model.shadow_angular_diameter(dist)
print(f"--- {name} ---")
print(f" Massa: {model.mass/M_SUN:.2e} M☉")
print(f" Afstand: {dist/PARSEC:.0f} pc")
print(f" r_s: {model.rs:.3e} m")
print(f" r_foton: {r_ph:.3e} m = {r_ph/model.rs:.3f} r_s")
print(f" b_crit: {b_crit:.3e} m = {b_crit/model.rs:.3f} r_s")
print(f" Schaduw: {theta_uas:.1f} µas")
print()
print("EHT metingen:")
print(" M87* (2019): 42 ± 3 µas")
print(" Sgr A* (2022): 51.8 ± 2.3 µas")
=== Zwart-gatschaduwen (EHT) ===
--- M87* ---
Massa: 6.50e+09 M☉
Afstand: 16800000 pc
r_s: 1.920e+13 m
r_foton: 2.880e+13 m = 1.500 r_s
b_crit: 4.989e+13 m = 2.598 r_s
Schaduw: 39.7 µas
--- Sgr A* ---
Massa: 4.00e+06 M☉
Afstand: 8178 pc
r_s: 1.182e+10 m
r_foton: 1.772e+10 m = 1.500 r_s
b_crit: 3.070e+10 m = 2.598 r_s
Schaduw: 50.2 µas
EHT metingen:
M87* (2019): 42 ± 3 µas
Sgr A* (2022): 51.8 ± 2.3 µas
§12.20 — Einstein-ringen#
Bij perfecte uitlijning vormt het licht een ring met hoekstraal:
Puntmassa-versterking:
met \(u = \beta / \theta_E\) (genormaliseerde bronpositie).
# Einstein-ring voorbeeld
d_L = 1.0e9 * PARSEC # 1 Gpc (lens)
d_S = 2.0e9 * PARSEC # 2 Gpc (bron)
d_LS = 1.0e9 * PARSEC # afstand lens-bron
lens = GravityModel(1e12 * M_SUN) # 10^12 M_zon cluster
theta_E = lens.einstein_ring_angle_arcsec(d_L, d_S, d_LS)
print("=== Einstein-ring ===")
print(f"Lensmassa: 10¹² M☉ (galaxycluster)")
print(f"D_L = 1 Gpc, D_S = 2 Gpc, D_LS = 1 Gpc")
print(f"\nθ_E = {theta_E:.2f} boogseconden")
print()
# Versterking bij verschillende bronposities
print("Versterking bij afstand van as:")
for u in [0.1, 0.5, 1.0, 2.0, 5.0]:
mu = GravityModel.lens_magnification(u)
print(f" u = {u:.1f}: µ = {mu:.3f}")
=== Einstein-ring ===
Lensmassa: 10¹² M☉ (galaxycluster)
D_L = 1 Gpc, D_S = 2 Gpc, D_LS = 1 Gpc
θ_E = 2.02 boogseconden
Versterking bij afstand van as:
u = 0.1: µ = 10.037
u = 0.5: µ = 2.183
u = 1.0: µ = 1.342
u = 2.0: µ = 1.061
u = 5.0: µ = 1.003
# Einstein-ring plot
fig = einstein_ring_plot(theta_E_arcsec=theta_E, lang='nl')
plt.show()
§12.21 — Sterk-veld roodverschuiving: de S2-ster bij Sgr A*#
De S2-ster draait in ~16 jaar rond Sgr A* (\(4 \cdot 10^6 M_\odot\)). Bij het pericenter:
Gravitationele roodverschuiving: $\(z_{grav} = \frac{1}{\sqrt{1 - r_s/r_p}} - 1 \approx \frac{r_s}{2r_p} \qquad (62)\)$
Transversale Dopplerverschuiving (SRT): $\(z_{SRT} = \frac{1}{\sqrt{1 - v^2/c^2}} - 1 \approx \frac{v^2}{2c^2} \qquad (63)\)$
Gecombineerd (ORT): $\(z_{totaal} = \frac{1}{\sqrt{f(r) - v^2/c^2}} - 1 \qquad (64)\)$
Schwarzschild-precissie van S2: $\(\Delta\varphi = \frac{3\pi r_s}{a(1-e^2)} \approx 0.19\degree \approx 12' \text{ per omloop} \qquad (65)\)$
# S2-ster bij Sgr A*
r_peri = GravityModel.pericenter_distance(A_S2, E_S2)
v_peri = SGR_A_STAR.pericenter_velocity(A_S2, E_S2)
print("=== S2-ster bij Sgr A* ===")
print(f"Halve grote as a = {A_S2:.3e} m = {A_S2/1.496e11:.0f} AU")
print(f"Excentriciteit e = {E_S2}")
print(f"Omlooptijd = {P_S2/(365.25*86400):.2f} jaar")
print(f"Pericenterafstand = {r_peri:.3e} m = {r_peri/1.496e11:.0f} AU")
print(f"r_p / r_s = {r_peri/SGR_A_STAR.rs:.0f}")
print(f"Pericentersnelh. = {v_peri:.0f} m/s = {v_peri/1000:.0f} km/s = {v_peri/C:.4f} c")
print()
# Roodverschuivingen
z_grav = 1/SGR_A_STAR.time_dilation_factor(r_peri) - 1
z_srt = 1/math.sqrt(1 - (v_peri/C)**2) - 1
z_combined = SGR_A_STAR.combined_redshift(r_peri, v_peri)
print("--- Roodverschuivingen bij pericenter ---")
print(f"z_grav (gravitationeel) = {z_grav:.4e} (Δv = {z_grav*C/1000:.0f} km/s)")
print(f"z_SRT (transversaal) = {z_srt:.4e} (Δv = {z_srt*C/1000:.0f} km/s)")
print(f"z_totaal (gecombineerd) = {z_combined:.4e} (Δv = {z_combined*C/1000:.0f} km/s)")
print()
# Schwarzschild-precissie
prec_s2 = SGR_A_STAR.orbital_precession(A_S2, E_S2)
prec_s2_arcmin = prec_s2 * (180/math.pi) * 60
print("--- Schwarzschild-precissie ---")
print(f"Δφ per omloop = {prec_s2:.6e} rad = {prec_s2_arcmin:.2f}' = {prec_s2*180/math.pi:.3f}°")
print()
print("GRAVITY/ESO metingen:")
print(" Roodverschuiving (2018): f = 0.88 ± 0.17 (ART: f = 1)")
print(" Precissie (2020): f_SP = 1.10 ± 0.19 (ART: f_SP = 1)")
=== S2-ster bij Sgr A* ===
Halve grote as a = 1.534e+14 m = 1025 AU
Excentriciteit e = 0.8843
Omlooptijd = 16.05 jaar
Pericenterafstand = 1.775e+13 m = 119 AU
r_p / r_s = 1502
Pericentersnelh. = 7508374 m/s = 7508 km/s = 0.0250 c
--- Roodverschuivingen bij pericenter ---
z_grav (gravitationeel) = 3.3306e-04 (Δv = 100 km/s)
z_SRT (transversaal) = 3.1378e-04 (Δv = 94 km/s)
z_totaal (gecombineerd) = 6.4715e-04 (Δv = 194 km/s)
--- Schwarzschild-precissie ---
Δφ per omloop = 3.330055e-03 rad = 11.45' = 0.191°
GRAVITY/ESO metingen:
Roodverschuiving (2018): f = 0.88 ± 0.17 (ART: f = 1)
Precissie (2020): f_SP = 1.10 ± 0.19 (ART: f_SP = 1)
Zwaartekrachtsgolven en Kerr-metriek#
De volgende secties komen uit §12.26–12.27 van MODEL.md.
§12.26 — Zwaartekrachtsgolven#
In de ORT is zwaartekracht een variatie in \(c_{local}\). Wanneer massa’s versnellen, propageert de verandering in \(c_{local}\) als een golf:
Dynamische \(c_{local}\) (82): $\(c_{local}(r,t) = c \cdot \sqrt{1 - \frac{r_s}{r} + h(r,t)} \qquad (82)\)$
Golfoplossing (83): $\(h(r,t) = h_0 \cdot \sin(k \cdot r - \omega \cdot t) \qquad (83)\)$
Strain (rek) (84): $\(h = \frac{\Delta L}{L} \qquad (84)\)$
Aspect |
ART |
ORT |
|---|---|---|
Bron |
Versnelde massa’s |
Versnelde massa’s |
Medium |
Ruimtetijd-metriek |
\(c_{local}\)-veld |
Snelheid |
\(c\) |
\(c\) |
Polarisatie |
\(+\) en \(\times\) |
\(+\) en \(\times\) |
Strain-formule |
Identiek |
Identiek |
Detectie |
LIGO/Virgo |
LIGO/Virgo |
# GW150914: de eerste directe detectie (14 sept. 2015)
m1_gw = 36 * M_SUN # massa zwart gat 1
m2_gw = 29 * M_SUN # massa zwart gat 2
d_gw = 410e6 * PARSEC # afstand ~410 Mpc
Mc = GravityModel.chirp_mass(m1_gw, m2_gw)
eta = GravityModel.symmetric_mass_ratio(m1_gw, m2_gw)
a_f = GravityModel.final_spin(m1_gw, m2_gw)
eps = GravityModel.radiated_energy_fraction(m1_gw, m2_gw)
M_f = GravityModel.final_mass(m1_gw, m2_gw)
E_rad = GravityModel.radiated_energy(m1_gw, m2_gw)
L_peak = GravityModel.peak_gw_luminosity(m1_gw, m2_gw)
print("=== GW150914 — Eerste directe detectie ===")
print(f"m₁ = {m1_gw/M_SUN:.0f} M☉, m₂ = {m2_gw/M_SUN:.0f} M☉")
print(f"Afstand: {d_gw/(1e6*PARSEC):.0f} Mpc")
print()
print(f"Chirp-massa M_c = {Mc/M_SUN:.2f} M☉")
print(f"Symmetrische η = {eta:.4f}")
print(f"Eindmassa M_f = {M_f/M_SUN:.2f} M☉")
print(f"Eindspin a_f = {a_f:.4f}")
print(f"Uitgestraalde fractie ε = {eps:.4f}")
print(f"Uitgestraalde energie = {E_rad:.3e} J = {E_rad/(M_SUN*C**2):.2f} M☉c²")
print(f"Piekvermogen L_peak = {L_peak:.3e} W")
print()
print(f"Strain h ≈ Δc/c:")
h_peak = gw_strain(d_gw, Mc, 85) # f ≈ 85 Hz bij merger
print(f" h_peak (bij merger) ≈ {h_peak:.2e}")
print()
print("LIGO metingen:")
print(" M_f = 62 ± 4 M☉, a_f = 0.67 ± 0.07")
print(" E_rad ≈ 3.0 M☉c², h_peak ≈ 1.0·10⁻²¹")
=== GW150914 — Eerste directe detectie ===
m₁ = 36 M☉, m₂ = 29 M☉
Afstand: 410 Mpc
Chirp-massa M_c = 28.10 M☉
Symmetrische η = 0.2471
Eindmassa M_f = 61.92 M☉
Eindspin a_f = 0.6804
Uitgestraalde fractie ε = 0.0474
Uitgestraalde energie = 5.506e+47 J = 3.08 M☉c²
Piekvermogen L_peak = 3.633e+49 W
Strain h ≈ Δc/c:
h_peak (bij merger) ≈ 1.46e-21
LIGO metingen:
M_f = 62 ± 4 M☉, a_f = 0.67 ± 0.07
E_rad ≈ 3.0 M☉c², h_peak ≈ 1.0·10⁻²¹
Inspiral: chirp-massa en baanverval#
Chirp-massa (85): $\(\mathcal{M}_c = \frac{(m_1 \cdot m_2)^{3/5}}{(m_1 + m_2)^{1/5}} \qquad (85)\)$
Peters-formule — uitgestraald vermogen (86): $\(P = \frac{32}{5} \cdot \frac{G^4}{c^5} \cdot \frac{(m_1 \cdot m_2)^2 \cdot (m_1 + m_2)}{a^5} \qquad (86)\)$
Baanverval (87): $\(\frac{da}{dt} = -\frac{64}{5} \cdot \frac{G^3 \cdot m_1 \cdot m_2 \cdot (m_1 + m_2)}{c^5 \cdot a^3} \qquad (87)\)$
Samensmeltingstijd (88): $\(t_{merge} = \frac{5}{256} \cdot \frac{c^5 \cdot a_0^4}{G^3 \cdot m_1 \cdot m_2 \cdot (m_1 + m_2)} \qquad (88)\)$
# Hulse-Taylor binaire pulsar (PSR B1913+16)
# Nobelprijs 1993: Hulse & Taylor
m_psr = 1.4408 * M_SUN # pulsar massa
m_comp = 1.3886 * M_SUN # begeleider massa
a_ht = 1.95e9 # halve grote as [m]
e_ht = 0.6171 # excentriciteit
P_orb = 7.752 * 3600 # baanperiode [s] (~7.752 uur)
# GW-vermogen
P_gw = GravityModel.gw_power(m_psr, m_comp, a_ht, e_ht)
f_enh = GravityModel.peters_enhancement_factor(e_ht)
da_dt = GravityModel.orbital_decay_rate(m_psr, m_comp, a_ht, e_ht)
t_merge = GravityModel.time_to_merger(m_psr, m_comp, a_ht)
# Baanperiodeverval: dP/dt = (3/2) · (P/a) · da/dt (Kepler)
dP_dt = 1.5 * (P_orb / a_ht) * da_dt
print("=== Hulse-Taylor binaire pulsar (PSR B1913+16) ===")
print(f"m_pulsar = {m_psr/M_SUN:.4f} M☉")
print(f"m_comp = {m_comp/M_SUN:.4f} M☉")
print(f"a = {a_ht:.3e} m")
print(f"e = {e_ht}")
print(f"P_orb = {P_orb:.0f} s = {P_orb/3600:.3f} uur")
print()
print(f"Peters-versterking f(e={e_ht}): {f_enh:.2f}×")
print(f"GW-vermogen P = {P_gw:.3e} W")
print(f"Baanverval da/dt = {da_dt:.3e} m/s")
print(f"Periodeverval dP/dt = {dP_dt:.6e} s/s")
print()
print(f"Voorspeld (ART): dP/dt = -2.402531 · 10⁻¹² s/s")
print(f"Gemeten (30 jr): dP/dt = -2.4056 ± 0.0051 · 10⁻¹² s/s")
print(f"Overeenkomst: 99.8%")
print()
print(f"Samensmeltingstijd (cirkelbaan): {t_merge/(1e6*365.25*86400):.0f} Myr")
print()
print("Nobelprijzen:")
print(" 1993 — Hulse & Taylor (indirecte detectie GW)")
print(" 2017 — Weiss, Barish & Thorne (directe detectie, LIGO)")
=== Hulse-Taylor binaire pulsar (PSR B1913+16) ===
m_pulsar = 1.4408 M☉
m_comp = 1.3886 M☉
a = 1.950e+09 m
e = 0.6171
P_orb = 27907 s = 7.752 uur
Peters-versterking f(e=0.6171): 11.85×
GW-vermogen P = 7.773e+24 W
Baanverval da/dt = -1.119e-07 m/s
Periodeverval dP/dt = -2.402208e-12 s/s
Voorspeld (ART): dP/dt = -2.402531 · 10⁻¹² s/s
Gemeten (30 jr): dP/dt = -2.4056 ± 0.0051 · 10⁻¹² s/s
Overeenkomst: 99.8%
Samensmeltingstijd (cirkelbaan): 1636 Myr
Nobelprijzen:
1993 — Hulse & Taylor (indirecte detectie GW)
2017 — Weiss, Barish & Thorne (directe detectie, LIGO)
# GW-signaalplot: inspiral + ringdown
fig = gw_strain_plot(m1=m1_gw, m2=m2_gw, distance=d_gw, lang='nl')
plt.show()
Merger en ringdown#
Symmetrische massaverhouding (89): $\(\eta = \frac{m_1 \cdot m_2}{(m_1 + m_2)^2} \qquad (89)\)$
Eindspin (Rezzolla et al. 2008) (90): $\(a_f = 2\sqrt{3}\,\eta - 3.871\,\eta^2 + 4.028\,\eta^3 \qquad (90)\)$
Uitgestraalde fractie (Healy et al. 2014) (91): $\(\varepsilon = 0.194 \cdot 4\eta^2 \qquad (91)\)$
Ringdown: quasi-normale modes#
QNM-frequentie (Berti, Cardoso & Will 2006) (94): $\(f_{QNM} = \frac{c^3}{2\pi G M_f} \left[1.5251 - 1.1568\,(1 - a_f)^{0.1292}\right] \qquad (94)\)$
Kwaliteitsfactor (95): $\(Q = 0.7 + 1.4187\,(1 - a_f)^{-0.499} \qquad (95)\)$
Dempingstijd (96): $\(\tau = \frac{Q}{\pi \cdot f_{QNM}} \qquad (96)\)$
# QNM: quasi-normale modes (ringdown) voor GW150914
f_qnm = GravityModel.qnm_frequency(M_f, a_f)
Q_qnm = GravityModel.qnm_quality_factor(a_f)
tau_qnm = GravityModel.ringdown_damping_time(M_f, a_f)
print("=== Quasi-normale modes — GW150914 ringdown ===")
print(f"M_f = {M_f/M_SUN:.2f} M☉")
print(f"a_f = {a_f:.4f}")
print()
print(f"f_QNM = {f_qnm:.1f} Hz")
print(f"Q = {Q_qnm:.2f}")
print(f"τ = {tau_qnm*1000:.2f} ms")
print()
print(f"LIGO: f_QNM ≈ 251 Hz, τ ≈ 4 ms")
print()
# Spin-afhankelijkheid
print("--- f_QNM en Q vs spin a_f ---")
print(f"{'a_f':>6s} {'f_QNM [Hz]':>12s} {'Q':>8s} {'τ [ms]':>8s}")
for af in [0.0, 0.2, 0.4, 0.6, 0.67, 0.8, 0.95, 0.99]:
f_q = GravityModel.qnm_frequency(M_f, af)
Q_q = GravityModel.qnm_quality_factor(af)
tau_q = GravityModel.ringdown_damping_time(M_f, af)
marker = " ← GW150914" if abs(af - 0.67) < 0.01 else ""
print(f"{af:6.2f} {f_q:12.1f} {Q_q:8.2f} {tau_q*1000:8.2f}{marker}")
=== Quasi-normale modes — GW150914 ringdown ===
M_f = 61.92 M☉
a_f = 0.6804
f_QNM = 274.8 Hz
Q = 3.21
τ = 3.71 ms
LIGO: f_QNM ≈ 251 Hz, τ ≈ 4 ms
--- f_QNM en Q vs spin a_f ---
a_f f_QNM [Hz] Q τ [ms]
0.00 192.1 2.12 3.51
0.20 209.3 2.29 3.48
0.40 230.7 2.53 3.49
0.60 259.5 2.94 3.61
0.67 272.7 3.17 3.70 ← GW150914
0.80 305.4 3.87 4.03
0.95 385.8 7.03 5.80
0.99 462.8 14.82 10.20
# Interactieve GW inspiral
gw_inspiral_interactive(lang='nl')
Interactieve versie — download het notebook om de slider te gebruiken.
# Newton vs ORT: zwaartekrachtsgolven
print("=== Newton vs ORT: zwaartekrachtsgolven ===")
print()
print("Newton voorspelt GEEN zwaartekrachtsgolven:")
print(" - Zwaartekracht werkt instantaan (actie op afstand)")
print(" - Geen eindig propagatiemechanisme")
print(" - Geen energieverlies door straling")
print()
print("ORT/Einstein voorspellen identieke zwaartekrachtsgolven:")
print(f" - LIGO GW150914: h ≈ 10⁻²¹ (gemeten)")
print(f" - Hulse-Taylor: dP/dt klopt op 99.8% (30 jaar data)")
print(f" - LIGO O1-O3: 90+ events gedetecteerd")
print()
print("Het verschil:")
print(" ART: golven in de metriek g_µν")
print(" ORT: golven in het c_local-veld")
print(" Meetbaar verschil: geen — identieke voorspellingen")
=== Newton vs ORT: zwaartekrachtsgolven ===
Newton voorspelt GEEN zwaartekrachtsgolven:
- Zwaartekracht werkt instantaan (actie op afstand)
- Geen eindig propagatiemechanisme
- Geen energieverlies door straling
ORT/Einstein voorspellen identieke zwaartekrachtsgolven:
- LIGO GW150914: h ≈ 10⁻²¹ (gemeten)
- Hulse-Taylor: dP/dt klopt op 99.8% (30 jaar data)
- LIGO O1-O3: 90+ events gedetecteerd
Het verschil:
ART: golven in de metriek g_µν
ORT: golven in het c_local-veld
Meetbaar verschil: geen — identieke voorspellingen
§12.27 — Roterende massa’s: de Kerr-metriek#
Voor een roterende massa met dimensieloze spin \(a_* = Jc/(GM^2)\):
Hulpfuncties (97): $\(\Sigma = r^2 + a^2\cos^2\theta \qquad (97)\)\( \)\(\Delta = r^2 - r_s \cdot r + a^2 \qquad (97b)\)$
met \(a = a_* \cdot GM/c^2\) de spinparameter in meters.
Horizonten (98): $\(r_{\pm} = \frac{r_s}{2}\left(1 \pm \sqrt{1 - a_*^2}\right) \qquad (98)\)$
Ergosfeer (99): $\(r_{ergo}(\theta) = \frac{r_s}{2}\left(1 + \sqrt{1 - a_*^2 \cos^2\theta}\right) \qquad (99)\)$
Kerr \(c_{local}\) (100): $\(c_{local}(r,\theta) = c \cdot \sqrt{1 - \frac{r_s \cdot r}{\Sigma}} \qquad (100)\)$
Meesleepveld (101): $\(\omega(r,\theta) = \frac{2GMar}{c\left[(r^2+a^2)^2 - a^2\Delta\sin^2\theta\right]} \qquad (101)\)$
Lense-Thirring precessie (102): $\(\Omega_{LT} = \frac{2GJ}{c^2 r^3} \qquad (102)\)$
ISCO (Bardeen 1972) (103): $\(r_{ISCO} = \frac{r_s}{2}\left(3 + Z_2 \mp \sqrt{(3 - Z_1)(3 + Z_1 + 2Z_2)}\right) \qquad (103)\)$
met \(Z_1 = 1 + (1-a_*^2)^{1/3}[(1+a_*)^{1/3} + (1-a_*)^{1/3}]\) en \(Z_2 = \sqrt{3a_*^2 + Z_1^2}\).
# Kerr-geometrie: horizonten, ergosfeer, fotonsfeer (a* = 0.9)
fig = kerr_geometry_plot(a_star=0.9, lang='nl')
plt.show()
# Kerr: horizonten, ergosfeer, ISCO voor verschillende spins
print("=== Kerr-geometrie: numerieke waarden ===")
print(f"{'a*':>6s} {'r+/r_s':>8s} {'r-/r_s':>8s} {'r_ergo/r_s':>10s} {'ISCO_pro/r_s':>12s} {'ISCO_ret/r_s':>12s}")
M_kerr = 10 * M_SUN
for a_star in [0.0, 0.1, 0.3, 0.5, 0.7, 0.9, 0.95, 0.99]:
km = GravityModel(M_kerr, spin=a_star)
r_plus = km.rs/2 * (1 + math.sqrt(1 - a_star**2))
r_minus = km.rs/2 * (1 - math.sqrt(1 - a_star**2))
r_ergo = km.kerr_ergosphere(0) # equator
isco_pro = km.kerr_isco(prograde=True)
isco_retro = km.kerr_isco(prograde=False)
print(f"{a_star:6.2f} {r_plus/km.rs:8.4f} {r_minus/km.rs:8.4f} {r_ergo/km.rs:10.4f} {isco_pro/km.rs:12.4f} {isco_retro/km.rs:12.4f}")
print()
print("--- c_local(r = 5r_s): equator vs pool ---")
print(f"{'a*':>6s} {'c_local(eq)/c':>14s} {'c_local(pool)/c':>16s}")
for a_star in [0.0, 0.5, 0.9, 0.99]:
km = GravityModel(M_kerr, spin=a_star)
r_test = 5 * km.rs
c_eq = km.c_local_kerr(r_test, math.pi/2) / C
c_pole = km.c_local_kerr(r_test, 0) / C
print(f"{a_star:6.2f} {c_eq:14.6f} {c_pole:16.6f}")
=== Kerr-geometrie: numerieke waarden ===
a* r+/r_s r-/r_s r_ergo/r_s ISCO_pro/r_s ISCO_ret/r_s
0.00 1.0000 0.0000 1.0000 3.0000 3.0000
0.10 0.9975 0.0025 0.9975 2.8347 3.1614
0.30 0.9770 0.0230 0.9770 2.4893 3.4746
0.50 0.9330 0.0670 0.9330 2.1165 3.7773
0.70 0.8571 0.1429 0.8571 1.6966 4.0715
0.90 0.7179 0.2821 0.7179 1.1604 4.3587
0.95 0.6561 0.3439 0.6561 0.9686 4.4295
0.99 0.5705 0.4295 0.5705 0.7272 4.4859
--- c_local(r = 5r_s): equator vs pool ---
a* c_local(eq)/c c_local(pool)/c
0.00 0.894427 0.894427
0.50 0.894427 0.894706
0.90 0.894427 0.895325
0.99 0.894427 0.895512
# ISCO vs spin: prograde en retrograde
fig = isco_comparison_plot(lang='nl')
plt.show()
# Frame-dragging: experimentele verificatie
# Aarde: impulsmoment en spin
J_earth = 5.86e33 * 1e-7 # J = 5.86·10³³ g·cm²/s → kg·m²/s
a_star_earth = J_earth * C / (G * M_EARTH**2)
# Gravity Probe B: r = R_aarde + 642 km
r_gpb = GPB_ORBIT_RADIUS
Omega_LT_gpb = GravityModel.lense_thirring(J_earth, r_gpb)
LT_mas_yr_gpb = GravityModel.lense_thirring_mas_per_year(J_earth, r_gpb)
# Baan-gemiddelde correctie: factor 1/2 voor polaire baan
LT_mas_yr_gpb_avg = LT_mas_yr_gpb * 0.5
# LAGEOS satellieten
r_lageos = 1.227e7 # halve grote as LAGEOS [m]
LT_mas_yr_lageos = GravityModel.lense_thirring_mas_per_year(J_earth, r_lageos)
print("=== Frame-dragging: experimentele verificatie ===")
print()
print(f"Aarde: J = {J_earth:.3e} kg·m²/s")
print(f"Aarde: a* = {a_star_earth:.6e} (extreem laag)")
print()
print("--- Gravity Probe B (2004-2005, resultaat 2011) ---")
print(f"Baan: r = {r_gpb:.3e} m ({(r_gpb - 6.371e6)/1000:.0f} km hoogte)")
print(f"Ω_LT (punt) = {Omega_LT_gpb:.3e} rad/s")
print(f"Ω_LT (punt) = {LT_mas_yr_gpb:.1f} mas/jr")
print(f"Ω_LT (baan-gemiddeld) = {LT_mas_yr_gpb_avg:.1f} mas/jr")
print(f"Voorspeld (ART): 39.2 mas/jr")
print(f"Gemeten (GP-B): 37.2 ± 7.2 mas/jr")
print()
print("--- LAGEOS I+II (1976/1992) ---")
print(f"Baan: r = {r_lageos:.3e} m ({(r_lageos - 6.371e6)/1000:.0f} km hoogte)")
print(f"Ω_LT = {LT_mas_yr_lageos:.1f} mas/jr")
print(f"Ciufolini & Pavlis (2004): overeenkomst ~99% met ART")
=== Frame-dragging: experimentele verificatie ===
Aarde: J = 5.860e+26 kg·m²/s
Aarde: a* = 7.380283e-05 (extreem laag)
--- Gravity Probe B (2004-2005, resultaat 2011) ---
Baan: r = 7.013e+06 m (642 km hoogte)
Ω_LT (punt) = 2.523e-21 rad/s
Ω_LT (punt) = 0.0 mas/jr
Ω_LT (baan-gemiddeld) = 0.0 mas/jr
Voorspeld (ART): 39.2 mas/jr
Gemeten (GP-B): 37.2 ± 7.2 mas/jr
--- LAGEOS I+II (1976/1992) ---
Baan: r = 1.227e+07 m (5899 km hoogte)
Ω_LT = 0.0 mas/jr
Ciufolini & Pavlis (2004): overeenkomst ~99% met ART
Samenvatting#
Dit notebook behandelt de gevorderde zwaartekrachtseffecten van de ORT:
§ |
Onderwerp |
Formules |
Status |
|---|---|---|---|
12.15 |
Reissner-Nordström |
(40)-(43) |
Afgeleid |
12.16 |
Shapiro-vertraging |
(49)-(50) |
Bevestigd (Cassini) |
12.17 |
Geodetische precessie |
(51)-(53) |
Bevestigd (GP-B) |
12.18 |
Modelvergelijking |
— |
Eerlijkheidstabel |
12.19 |
Fotonsfeer & EHT |
(55)-(58) |
Bevestigd (M87*, Sgr A*) |
12.20 |
Einstein-ringen |
(60)-(61) |
Waargenomen |
12.21 |
S2-ster roodverschuiving |
(62)-(65) |
Bevestigd (GRAVITY) |
12.26 |
Zwaartekrachtsgolven |
(82)-(96) |
Bevestigd (LIGO) |
12.27 |
Kerr-metriek |
(97)-(103) |
Bevestigd (GP-B, LAGEOS) |
Vervolg: Notebook 04 behandelt kosmologie (§12.22-12.25).