Formación de agujeros negros: equilibrio hidrostático, colapso gravitacional y horizontes
Esta lección autocontenida explica cómo se forman los agujeros negros desde la Relatividad General y la astrofísica de objetos compactos. Recorremos las ecuaciones de Einstein, el equilibrio hidrostático relativista (TOV), el teorema de Buchdahl, el colapso de Oppenheimer–Snyder, superficies atrapadas y horizontes.
— Incluye heurística, demostraciones, ejemplos numéricos y código en Python
Introducción y Motivación
Un agujero negro aparece cuando la presión y los efectos cuántico-degenerativos ya no bastan para sostener una masa contra su propia gravedad, creando una región de la que ni la luz puede escapar. Este fenómeno surge en:
- Colapso de estrellas masivas: Cuando el combustible nuclear se agota
- Fusiones de objetos compactos: Sistemas binarios en espiral
- Colapso directo de gas primordial: En el universo temprano
- Escenarios primordiales: Fluctuaciones de densidad extremas
Comprender su formación exige combinar geometría del espacio-tiempo, materia relativista e invariantes causales.
Mapa Conceptual Mínimo
Definición: Variedad y Métrica
El espacio-tiempo es una variedad de 4D con métrica de firma \((-,+,+,+)\) denotada \(g_{\mu\nu}\). La curvatura efectiva \(G_{\mu\nu}\) responde al tensor energía–impulso \(T_{\mu\nu}\) por las ecuaciones de Einstein:
\[ G_{\mu\nu} \;=\; \frac{8\pi G}{c^4}\, T_{\mu\nu} \]Definición: Simetría Esférica Estática
Línea de universo con métrica tipo Schwarzschild. El radio de Schwarzschild es:
\[ r_s = \frac{2GM}{c^2} \]Ecuaciones TOV (Tolman-Oppenheimer-Volkoff)
Para fluidos perfectos, el equilibrio de una estrella isotrópica satisface las ecuaciones TOV con presión \(p\), densidad \(\rho\), y masa interior \(m(r)\):
\[ \begin{aligned} \frac{dp}{dr} &= -\frac{G\big(\rho c^2 + p\big)\big(m(r)c^2 + 4\pi r^3 p\big)}{c^4\, r\big(r – 2G m(r)/c^2\big)},\\[4pt] \frac{dm}{dr} &= 4\pi r^2 \rho. \end{aligned} \]Definición: Superficie Atrapada
Una superficie atrapada es una 2–superficie cerrada en la que las expansiones de los rayos de luz hacia el futuro, tanto salientes como entrantes, son negativas: \(\theta_{(\ell)}<0\) y \(\theta_{(n)}<0\).
Interpretación física: Toda luz emitida hacia fuera sigue convergiendo; el “exterior” está causalmente hacia dentro. En colapso gravitacional, la aparición de tales superficies señala la formación de un horizonte cercano.
Análisis Preliminar: De la Heurística a lo Formal
Intuición Física
Si una masa \(M\) queda comprimida en un radio \(R\) comparable con \(r_s=2GM/c^2\), los conos de luz se inclinan hacia el interior. Para \(R\le r_s\), la salida causal se bloquea.
En equilibrio, la presión interna debe satisfacer las ecuaciones TOV. Si no existe solución físicamente aceptable por debajo de cierto radio, el sistema no puede sostenerse y colapsa.
Concepto Clave
Teorema de Buchdahl
Sea una estrella estática, esférica, con presión isotrópica, densidad \(\rho(r)\) no creciente y materia que satisface \(p\ge 0\), \(\rho\ge 0\). Entonces su compacidad satisface:
\[ \frac{2GM}{Rc^2} \;<\; \frac{8}{9} \]En particular, \(R > \tfrac{9}{8}\, r_s\).
Demostración: Sea \(u(r)=Gm(r)/(rc^2)\). Con \(\rho’ \le 0\), la masa interior satisface \(m(r)\le(4\pi/3)\rho(0) r^3\).
Del sistema TOV y las ecuaciones de campo estáticas, se obtiene para \(e^{\nu/2}\) la desigualdad de Buchdahl:
\[ \frac{d^2}{dr^2}\big(e^{\nu/2}\big) \le 0 \]La concavidad implica que \(e^{\nu/2}\) está por encima del interpolante lineal entre centro y superficie. Combinando con las condiciones de contorno \(p(R)=0\) y continuidad con el exterior de Schwarzschild, resulta la cota:
\[ \frac{2GM}{Rc^2} \;<\; \frac{8}{9} \]Si la compacidad igualara \(8/9\), la presión central divergiría, contradiciendo \(p\) finita bajo las hipótesis.
Corolario: Límite de Configuraciones Estáticas
Ninguna configuración estática esférica, isotrópica y con densidad no creciente puede alcanzar \(R \le \tfrac{9}{8} r_s\). Al forzar \(R\) por debajo de ese umbral, el sistema pierde soporte hidrostático y progresa al colapso, formándose superficies atrapadas.
Colapso Oppenheimer–Snyder: Polvo Homogéneo
El modelo OS considera una esfera de polvo homogéneo en caída libre. El interior es FRW cerrado y el exterior, Schwarzschild. La superficie colapsa en tiempo propio finito y se forma un horizonte antes de la singularidad.
Lema: Tiempo Propio de Colapso OS
Para una esfera homogénea de radio inicial \(R_0\) y masa \(M\), el tiempo propio del material desde el reposo hasta la singularidad es:
\[ \tau_{\text{colapso}} \;=\; \frac{\pi R_0^{3/2}}{2\sqrt{2GM}} \]Demostración: El interior se describe con FRW cerrado:
\[ ds^2=-c^2 d\tau^2 + a(\tau)^2\left[\frac{dr^2}{1-r^2}+r^2 d\Omega^2\right] \]Con polvo \(p=0\) y \(a(\eta)=\tfrac{a_{\max}}{2}(1+\cos\eta)\), se tiene:
\[ d\tau=\tfrac{a_{\max}}{2c}(1+\cos\eta)\,d\eta \]Ajustando la constante por \(a(0)=1\) y emparejando en la frontera con Schwarzschild, se integra \(\eta:0\to\pi\), obteniendo la expresión citada.
Horizontes, Atrapamiento y Censura Cósmica
La ecuación de Raychaudhuri para congruencias nulas con la condición de energía nula implica focos en tiempo afín finito, favoreciendo la formación de superficies atrapadas.
Conceptos Avanzados
Canales de Formación en Astrofísica
| Canal de Formación | Mecanismo | Masa Típica | Escala de Tiempo |
|---|---|---|---|
| Colapso de núcleo | Estrellas \( \gtrsim 20\,M_\odot\) | \(3-50\,M_\odot\) | Microsegundos |
| Fusiones NS–NS | Sistemas binarios | \(2-5\,M_\odot\) | Milisegundos |
| Colapso directo | Gas primordial | \(10^4-10^6\,M_\odot\) | \(10^5-10^6\) años |
| Colapso crítico | Choptuik scaling | \(M_{\rm BH}\propto (p-p_*)^\gamma\) | Variable |
Ejemplos Escalonados
Ejemplo 1 (Básico): Radio de Schwarzschild
Planteamiento: Para \(M=10\,M_\odot\), calcula \(r_s\) y la compacidad de una esfera con \(R=30\ \text{km}\).
- Cálculo de \(r_s\):
- Compacidad:
Conclusión: Superficie muy próxima al atrapamiento. Por encima de \(r_s\) aún no hay horizonte; al cruzar \(R=r_s\) se forma.
Ejemplo 2 (Intermedio): Cota de Buchdahl
Planteamiento: Para una estrella isotrópica con \(M=2\,M_\odot\), ¿cuál es el radio mínimo permitido por Buchdahl?
- Radio de Schwarzschild:
- Límite de Buchdahl:
- Verificación:
Comentario: Un radio medido por debajo de ese umbral sería incompatible con equilibrio estático isotrópico → sugiere colapso o anisotropías/rotación significativas.
Recetas de Procedimiento
- Evaluar riesgo de colapso: Calcular \(\mathcal{C}=2GM/(Rc^2)\). Si \(\mathcal{C}\gtrsim 1\), el atrapamiento es inminente.
- Integrar TOV: Con EoS dada \(p(\rho)\), elegir \(\rho_c\), integrar desde \(r=0\) hasta \(p=0\).
- Detección de horizonte aparente: Verificar \(1-2Gm(r)/(rc^2)=0\).
- Modelo OS: Usar el lema para el tiempo propio de colapso.
Código en Python (Reproducible)
Los siguientes fragmentos implementan constantes, un integrador TOV con ecuación de estado politrópica, el cálculo de compacidad y un modelo paramétrico OS.
Constantes y Utilidades
import numpy as np
# Constantes SI
G = 6.67430e-11 # Constante gravitacional
c = 2.99792458e8 # Velocidad de la luz
Ms = 1.98847e30 # Masa solar
km = 1e3 # Kilómetro en metros
def r_schwarzschild(M):
"""Calcula el radio de Schwarzschild para una masa M"""
return 2*G*M/c**2
def compacidad(M, R):
"""Calcula la compacidad adimensional 2GM/(Rc²)"""
return 2*G*M/(R*c**2)
def format_km(x):
"""Utilidad de impresión para convertir metros a km"""
return f"{x/km:.3f} km"
# Ejemplo de uso
M_ejemplo = 10 * Ms
print(f"Radio de Schwarzschild: {format_km(r_schwarzschild(M_ejemplo))}")
print(f"Compacidad para R=30km: {compacidad(M_ejemplo, 30*km):.3f}")
Integración TOV con EoS Politrópica
from math import isfinite
from dataclasses import dataclass
@dataclass
class TOVResult:
"""Resultado de la integración TOV"""
radius: float
mass: float
profiles: dict
def tov_rhs(r, y, K, gamma):
"""
Lado derecho del sistema TOV para EoS politrópica p = K*ρ^γ
Args:
r: Radio coordenada
y: [m(r), p(r)] - masa y presión
K: Constante politrópica
gamma: Índice politrópico
Returns:
[dm/dr, dp/dr]
"""
m, p = y
if p <= 0: # Condición de vacío
return np.array([0.0, 0.0])
# EoS: p = K * rho^gamma => rho = (p/K)^(1/gamma)
rho = (p / K) ** (1.0/gamma)
# Denominador de la ecuación TOV
denom = r * (r - 2*G*m/c**2)
# Ecuaciones TOV
dpdr = -G * (rho*c**2 + p) * (m*c**2 + 4*np.pi*r**3*p) / (c**4 * denom)
dmdr = 4*np.pi*r**2 * rho
return np.array([dmdr, dpdr])
def integrate_tov(r0, p_c, K, gamma, dr=5.0, rmax=5e6):
"""
Integra las ecuaciones TOV usando Runge-Kutta de 4º orden
Args:
r0: Radio inicial (pequeño, ~1m)
p_c: Presión central
K, gamma: Parámetros de la EoS
dr: Paso de integración
rmax: Radio máximo
Returns:
TOVResult con radio, masa y perfiles
"""
r, m, p = r0, 0.0, p_c
rs, ms, ps, rlist = [], [], [], []
while p > 0 and r < rmax:
y = np.array([m, p])
# Runge-Kutta 4
k1 = tov_rhs(r, y, K, gamma)
k2 = tov_rhs(r + dr/2, y + dr*k1/2, K, gamma)
k3 = tov_rhs(r + dr/2, y + dr*k2/2, K, gamma)
k4 = tov_rhs(r + dr, y + dr*k3, K, gamma)
y_next = y + (dr/6)*(k1 + 2*k2 + 2*k3 + k4)
m, p = float(y_next[0]), float(y_next[1])
r += dr
if not (isfinite(m) and isfinite(p)):
break
rs.append(r)
ms.append(m)
ps.append(max(p, 0.0))
rlist.append(r)
# Criterio de horizonte aparente (diagnóstico)
if r - 2*G*m/c**2 <= 0:
print(f"¡Horizonte aparente detectado en r = {format_km(r)}!")
break
R, M = r, m
return TOVResult(
radius=R,
mass=M,
profiles={
"r": np.array(rlist),
"m": np.array(ms),
"p": np.array(ps)
}
)
Diagnóstico de Buchdahl y Análisis
def diagnostico_buchdahl(M, R):
"""
Realiza diagnóstico completo de compacidad y límites físicos
Args:
M: Masa en kg
R: Radio en metros
Returns:
dict con análisis completo
"""
C = compacidad(M, R)
r_s = r_schwarzschild(M)
buchdahl_limit = 8.0/9.0
min_radius_buchdahl = (9.0/8.0) * r_s
return {
"compacidad": C,
"radio_schwarzschild_km": format_km(r_s),
"criterio_buchdahl": C < buchdahl_limit,
"limite_buchdahl": buchdahl_limit,
"radio_minimo_buchdahl_km": format_km(min_radius_buchdahl),
"horizonte_formado": R <= r_s,
"fraccion_schwarzschild": R / r_s,
"presion_central_diverge": C >= buchdahl_limit,
"status": "ESTABLE" if C < buchdahl_limit else "COLAPSO INMINENTE"
}
# Ejemplo: Estrella de neutrones típica
M_ns = 1.4 * Ms # Masa de Chandrasekhar
R_ns = 12.0 * km # Radio típico
resultado = diagnostico_buchdahl(M_ns, R_ns)
print("=== DIAGNÓSTICO DE ESTRELLA DE NEUTRONES ===")
for key, value in resultado.items():
print(f"{key}: {value}")
Modelo de Colapso Oppenheimer-Snyder
def tiempo_colapso_OS(R0, M):
"""
Calcula el tiempo propio de colapso en el modelo OS
Args:
R0: Radio inicial en metros
M: Masa total en kg
Returns:
Tiempo de colapso en segundos
"""
return np.pi * R0**1.5 / (2.0 * np.sqrt(2*G*M))
def analisis_colapso_completo(R0, M):
"""Análisis completo del colapso OS"""
tau_colapso = tiempo_colapso_OS(R0, M)
r_s = r_schwarzschild(M)
tiempo_luz = R0 / c
return {
"radio_inicial_km": format_km(R0),
"masa_masas_solares": M / Ms,
"tiempo_colapso_s": tau_colapso,
"tiempo_colapso_ms": tau_colapso * 1000,
"tiempo_luz_s": tiempo_luz,
"ratio_colapso_luz": tau_colapso / tiempo_luz,
"radio_schwarzschild_km": format_km(r_s),
"compacidad_inicial": compacidad(M, R0)
}
# Ejemplo: Estrella masiva pre-colapso
R0_estrella = 1e7 # 10,000 km
M_estrella = 20 * Ms
resultado_colapso = analisis_colapso_completo(R0_estrella, M_estrella)
print("\n=== ANÁLISIS DE COLAPSO OS ===")
for key, value in resultado_colapso.items():
print(f"{key}: {value}")
Código Reproducible
Ejemplo Reproducible: Curva Masa-Radio
Ejemplo Avanzado: Curva M-R para Politropo
Objetivo: Generar la curva masa–radio para un politropo \(\gamma=2\) y localizar el límite TOV.
import matplotlib.pyplot as plt
def curva_mr_politropo(K, gamma, rho_c_list, dr=5.0):
"""
Genera curva masa-radio para politropo dado
Args:
K: Constante politrópica
gamma: Índice politrópico
rho_c_list: Lista de densidades centrales
dr: Paso de integración
Returns:
Array de (masa, radio) en unidades SI
"""
MR = []
for rho_c in rho_c_list:
p_c = K * rho_c**gamma
try:
res = integrate_tov(1.0, p_c, K, gamma, dr=dr)
MR.append((res.mass, res.radius))
except:
continue # Saltar configuraciones problemáticas
return np.array(MR)
# Parámetros del politropo
K = 1e5 # Constante politrópica (unidades SI)
gamma = 2.0 # Índice politrópico
# Barrido de densidades centrales
rho_c_min = 5e16 # kg/m³
rho_c_max = 2e18 # kg/m³
n_points = 50
rho_c_list = np.logspace(np.log10(rho_c_min), np.log10(rho_c_max), n_points)
# Generar curva M-R
print("Generando curva masa-radio...")
MR_data = curva_mr_politropo(K, gamma, rho_c_list, dr=10.0)
if len(MR_data) > 0:
masas = MR_data[:, 0] / Ms # En masas solares
radios = MR_data[:, 1] / km # En kilómetros
# Encontrar máximo (límite TOV)
idx_max = np.argmax(masas)
M_max = masas[idx_max]
R_max = radios[idx_max]
print(f"Límite TOV encontrado:")
print(f"M_max = {M_max:.2f} masas solares")
print(f"R_max = {R_max:.1f} km")
print(f"Compacidad máxima = {compacidad(M_max*Ms, R_max*km):.3f}")
# Verificar Buchdahl para cada punto
for i, (M, R) in enumerate(zip(masas, radios)):
C = compacidad(M*Ms, R*km)
if C >= 8.0/9.0:
print(f"¡Violación de Buchdahl en punto {i}: C = {C:.3f}!")
break
else:
print("No se pudieron generar datos válidos")
Resultado esperado: El pico de \(M\) delimita el tránsito a colapso. Por encima del máximo, el equilibrio estático falla y progresa hacia agujero negro.
Errores Frecuentes y Cómo Evitarlos
Errores Conceptuales Comunes
- Confundir horizontes: Aparente (local) vs. eventos (global)
- Aplicar Buchdahl sin verificar: Requiere isotropía y \(\rho'\leq 0\)
- Usar \(r_s\) como radio físico: Es un invariante geométrico
- Ignorar estabilidad: Analizar el signo de \(dM/d\rho_c\)
- Inconsistencias de unidades: Homogeneizar SI o geométricas
Mini-Ejercicios Propuestos
- Demuestra que si \(p=0\) en el interior, no hay equilibrio a presión nula para \(\rho>0\).
- Para \(M=1.4\,M_\odot\), encuentra el rango de radios permitido por Buchdahl.
- Estima \(\tau_{\text{colapso}}\) para \(M=5\,M_\odot\) y \(R_0=10^7\ \text{m}\).
- Implementa detección de horizonte aparente: primer \(r\) con \(1-2Gm/(rc^2)=0\).
- Explica por qué superficies atrapadas bloquean extensión estática.
Mostrar Soluciones
Solución 1: Equilibrio con Presión Nula
De las ecuaciones TOV, si \(p\equiv 0\) entonces \(dp/dr=0\). La primera ecuación implica:
\[ \frac{(\rho c^2)(m c^2)}{c^4 r(r-2Gm/c^2)} = 0 \]Con \(\rho>0\) y \(r>2Gm/c^2\), solo puede cumplirse si \(m=0\), lo que fuerza \(\rho=0\). Por tanto, no hay equilibrio con \(p=0\) y \(\rho>0\).
Solución 2: Límite para \(M=1.4\,M_\odot\)
Radio de Schwarzschild: \(r_s=2.95\times 1.4 \approx 4.13\ \text{km}\)
Límite de Buchdahl: \(R>\frac{9}{8}r_s\approx 4.65\ \text{km}\)
Para \(R=12\ \text{km}\): \(\frac{2GM}{Rc^2}\approx 0.344 < \frac{8}{9}\) ✓
Solución 3: Tiempo de Colapso OS
Con \(M=5M_\odot\) y \(R_0=10^7\ \text{m}\):
\[ \tau = \frac{\pi (10^7)^{3/2}}{2\sqrt{2G \cdot 5M_\odot}} \approx 0.8\ \text{s} \]Tiempo de luz: \(R_0/c \approx 0.033\ \text{s}\). Ratio: \(\tau/(R_0/c) \approx 24\)
Fórmulas de Referencia
| Concepto | Fórmula | Unidades SI |
|---|---|---|
| Radio de Schwarzschild | \(r_s=2GM/c^2\) | metros |
| Compacidad | \(\mathcal{C}=2GM/(Rc^2)\) | adimensional |
| Raychaudhuri (nula) | \(\frac{d\theta}{d\lambda}=-\frac{1}{2}\theta^2-\sigma^2-R_{\mu\nu}k^\mu k^\nu\) | \(s^{-2}\) |
| Kerr (horizonte) | \(r_+=\frac{GM}{c^2}+\sqrt{(GM/c^2)^2-a^2}\) | metros |
Conclusión
La formación de un agujero negro combina tres elementos fundamentales:
- Límite de equilibrio hidrostático (TOV) y su cota geométrica (Buchdahl)
- Dinámica de colapso (OS como modelo canónico)
- Criterios locales de atrapamiento y horizontes
El patrón general es claro: al crecer la compacidad y fallar la presión de sostén, la geometría obliga a focos nulos y a la aparición de superficies atrapadas.
Desde aquí se conectan extensiones naturales: rotación (Kerr), anisotropías, acreción y colapso crítico. Los fragmentos de Python permiten reproducir curvas M–R y tiempos de colapso, cerrando el ciclo teoría–cálculo–verificación.