.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/relativity/schwarzschild/plot_radial_infall_and_singularity.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code. .. rst-class:: sphx-glr-example-title .. _sphx_glr_api_gallery_relativity_schwarzschild_plot_radial_infall_and_singularity.py: Penrose's singularity theorems: finite proper time, divergent coordinate time ==================================================================================== Long before Penrose's 1965 proof that trapped surfaces force geodesic incompleteness regardless of symmetry, a simpler, coordinate-dependent puzzle already hinted that something was wrong with treating Schwarzschild coordinate time :math:`t` as a universal clock: a particle dropped from rest at radius :math:`R` reaches the true singularity in *finite* proper time, .. math:: \tau_{r=0} = \frac{\pi}{2}\sqrt{\frac{R^3}{2M}}, even though the same infall, described in Schwarzschild :math:`t`, takes forever -- :math:`t\to\infty` as the particle approaches the horizon. This example integrates exactly that radial plunge with :meth:`~physicskit.relativity.chapters.schwarzschild.SchwarzschildBlackHole.eccentric_orbit_initial_state` and :meth:`~physicskit.relativity.chapters.schwarzschild.SchwarzschildBlackHole.integrate_geodesic`, and shows both halves directly: proper time accumulates normally all the way to the horizon, while :math:`dt/d\tau` grows without bound over the same interval. Schwarzschild coordinates become singular exactly at the horizon, so the integrator -- built on this same coordinate time -- cannot be pushed any further inward at all; reaching the true singularity needs the closed-form :math:`\tau_{r=0}` above, evaluated directly rather than integrated numerically. .. GENERATED FROM PYTHON SOURCE LINES 31-36 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from physicskit.relativity.chapters.schwarzschild import SchwarzschildBlackHole .. GENERATED FROM PYTHON SOURCE LINES 37-41 A radial plunge from rest -------------------------------- ``eccentricity_boost=1.0`` removes all tangential velocity, giving a purely radial infall starting from rest at ``r0``. .. GENERATED FROM PYTHON SOURCE LINES 41-61 .. code-block:: Python M = 1.0 bh = SchwarzschildBlackHole(M=M) R0 = 10.0 y0 = bh.eccentric_orbit_initial_state(R0, eccentricity_boost=1.0) print(f"initial 4-velocity (t,r,theta,phi,u^t,u^r,u^theta,u^phi): {np.round(y0, 6)}") print("(u^r = u^phi = 0: purely radial, released from rest)") dtau = 0.001 trajectory = bh.integrate_geodesic(y0, dtau, n_steps=200_000) r = trajectory["r"] t = trajectory["t"] tau = np.arange(len(r)) * dtau print(f"\nhorizon radius: r_s = {bh.horizon_radius}") print(f"integration halts at r = {r[-1]:.6f} (just outside the horizon -- Schwarzschild") print(" coordinates are singular exactly there, so this coordinate-time integrator cannot follow the particle further)") print(f"proper time elapsed to reach the horizon: tau = {tau[-1]:.4f} (finite)") print(f"Schwarzschild coordinate time elapsed over the same fall: t = {t[-1]:.4f}") .. rst-class:: sphx-glr-script-out .. code-block:: none initial 4-velocity (t,r,theta,phi,u^t,u^r,u^theta,u^phi): [ 0. 10. 1.570796 0. 1.118034 0. 0. 0. ] (u^r = u^phi = 0: purely radial, released from rest) horizon radius: r_s = 2.0 integration halts at r = 2.001672 (just outside the horizon -- Schwarzschild coordinates are singular exactly there, so this coordinate-time integrator cannot follow the particle further) proper time elapsed to reach the horizon: tau = 33.6990 (finite) Schwarzschild coordinate time elapsed over the same fall: t = 55.4961 .. GENERATED FROM PYTHON SOURCE LINES 62-64 dt/dtau diverges even though tau itself does not -------------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 64-82 .. code-block:: Python dt_dtau = np.gradient(t, tau) print(f"\ndt/dtau near the start of the fall: {dt_dtau[10]:.4f}") print(f"dt/dtau near the horizon: {dt_dtau[-10]:.4f} (still climbing -- diverges exactly at r=2M)") fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(11, 4.5)) ax1.plot(tau, r, color="steelblue") ax1.axhline(bh.horizon_radius, color="firebrick", ls="--", label=f"horizon r={bh.horizon_radius}") ax1.set_xlabel(r"proper time $\tau$") ax1.set_ylabel("r") ax1.set_title("r(tau): smooth, finite proper time to the horizon") ax1.legend() ax2.semilogy(tau, dt_dtau, color="darkorange") ax2.set_xlabel(r"proper time $\tau$") ax2.set_ylabel(r"$dt/d\tau$") ax2.set_title(r"$dt/d\tau$ diverges: the coordinate-time picture breaks down") fig.tight_layout() .. image-sg:: /api/gallery/relativity/schwarzschild/images/sphx_glr_plot_radial_infall_and_singularity_001.png :alt: r(tau): smooth, finite proper time to the horizon, $dt/d\tau$ diverges: the coordinate-time picture breaks down :srcset: /api/gallery/relativity/schwarzschild/images/sphx_glr_plot_radial_infall_and_singularity_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none dt/dtau near the start of the fall: 1.1180 dt/dtau near the horizon: 185.6897 (still climbing -- diverges exactly at r=2M) .. GENERATED FROM PYTHON SOURCE LINES 83-91 The true singularity: reached analytically, not numerically -------------------------------------------------------------------- The closed-form proper time to r=0 follows from the same radial energy-conservation equation the integrator solves, independent of which time coordinate is used to parametrize the fall -- it is larger than the proper time to the horizon found above, exactly as it must be (the particle keeps falling, and keeps accumulating proper time, after crossing the horizon). .. GENERATED FROM PYTHON SOURCE LINES 91-101 .. code-block:: Python tau_r0 = (np.pi / 2.0) * np.sqrt(R0**3 / (2.0 * M)) print(f"\nclosed-form proper time to the TRUE singularity r=0: tau_r=0 = {tau_r0:.4f}") print(f"proper time to the horizon found numerically above: tau_horizon = {tau[-1]:.4f}") print(f"tau_horizon < tau_r=0: {tau[-1] < tau_r0} (the particle keeps falling, and keeps aging, past the horizon)") print("\nPenrose's actual theorem needs none of this machinery -- no radial symmetry, no explicit") print("solution, and no coordinate system at all: once a trapped surface forms, SOME causal geodesic") print("must be incomplete, full stop. The finite-tau/divergent-t contrast above is the elementary,") print("coordinate-bound precursor puzzle that made a fully coordinate-free proof necessary in the first place.") plt.show() .. rst-class:: sphx-glr-script-out .. code-block:: none closed-form proper time to the TRUE singularity r=0: tau_r=0 = 35.1241 proper time to the horizon found numerically above: tau_horizon = 33.6990 tau_horizon < tau_r=0: True (the particle keeps falling, and keeps aging, past the horizon) Penrose's actual theorem needs none of this machinery -- no radial symmetry, no explicit solution, and no coordinate system at all: once a trapped surface forms, SOME causal geodesic must be incomplete, full stop. The finite-tau/divergent-t contrast above is the elementary, coordinate-bound precursor puzzle that made a fully coordinate-free proof necessary in the first place. .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.099 seconds) .. _sphx_glr_download_api_gallery_relativity_schwarzschild_plot_radial_infall_and_singularity.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_radial_infall_and_singularity.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_radial_infall_and_singularity.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_radial_infall_and_singularity.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_