.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/quantum/relativistic/plot_klein_paradox.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_quantum_relativistic_plot_klein_paradox.py: Klein's paradox: relativistic particles at a tall potential step ================================================================ In 1929 Oskar Klein found that a Dirac electron hitting a step :math:`V_0` higher than :math:`E + mc^2` is partly transmitted, however tall the step. The transmitted wave is a negative-energy state: the step bends the antiparticle continuum down to the particle's energy. :func:`~physicskit.quantum.chapters.relativistic.dirac_step_scattering` and :func:`~physicskit.quantum.chapters.relativistic.klein_gordon_step_scattering` show the three regimes: ordinary transmission, total reflection, and the Klein zone. There, fermions have :math:`R < 1` but spin-0 bosons have :math:`R > 1`. .. GENERATED FROM PYTHON SOURCE LINES 15-29 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from physicskit.quantum.chapters.relativistic import dirac_step_scattering, klein_gordon_step_scattering m, E = 1.0, 2.0 V0 = np.linspace(0, 8, 1601) V0 = V0[np.abs(V0 - 2 * E) > 0.02] # skip the KG pole at V0 = 2E R_d, T_d = dirac_step_scattering(E, V0, m) R_kg, T_kg = klein_gordon_step_scattering(E, V0, m) R_naive, _ = dirac_step_scattering(E, V0, m, group_velocity=False) .. GENERATED FROM PYTHON SOURCE LINES 30-32 Reflection coefficient across the three regimes ------------------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 32-47 .. code-block:: Python fig, ax = plt.subplots(figsize=(10, 5)) ax.axvspan(E - m, E + m, color="0.9", label=r"$|E - V_0| < m$: total reflection") ax.axvspan(E + m, V0.max(), color="C2", alpha=0.08, label=r"Klein zone $V_0 > E + m$") ax.plot(V0, R_d, lw=2, label="Dirac (spin 1/2)") ax.plot(V0, R_kg, lw=2, label="Klein-Gordon (spin 0)") ax.plot(V0, R_naive, ":", color="C0", label="Dirac, naive $q > 0$ choice") ax.axhline(1, color="k", lw=0.5) ax.set_ylim(0, 4) ax.set_xlabel(r"step height $V_0 / mc^2$") ax.set_ylabel("reflection coefficient R") ax.set_title(rf"Scattering off a potential step at $E = {E}\,mc^2$") ax.legend(fontsize=8, loc="upper left") fig.tight_layout() .. image-sg:: /api/gallery/quantum/relativistic/images/sphx_glr_plot_klein_paradox_001.png :alt: Scattering off a potential step at $E = 2.0\,mc^2$ :srcset: /api/gallery/quantum/relativistic/images/sphx_glr_plot_klein_paradox_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 48-56 Transmission that never switches off ------------------------------------- As :math:`V_0 \to \infty` the Dirac transmission tends to :math:`4\kappa_\infty/(1+\kappa_\infty)^2` with :math:`\kappa_\infty = \sqrt{(E+m)/(E-m)}`: a finite fraction of the beam always gets through, the transmitted current being carried by antiparticles created at the step. .. GENERATED FROM PYTHON SOURCE LINES 56-71 .. code-block:: Python V_big = np.logspace(0.5, 4, 200) _, T_big = dirac_step_scattering(E, V_big, m) kinf = np.sqrt((E + m) / (E - m)) fig2, ax2 = plt.subplots(figsize=(8, 4)) ax2.semilogx(V_big, T_big, lw=2, label="Dirac transmission T") ax2.axhline(4 * kinf / (1 + kinf) ** 2, color="k", ls="--", label=r"$4\kappa_\infty/(1+\kappa_\infty)^2$") ax2.set_xlabel(r"$V_0 / mc^2$") ax2.set_ylabel("T") ax2.set_title("Klein tunneling persists for arbitrarily tall steps") ax2.legend() fig2.tight_layout() print(f"R + T = 1 everywhere: Dirac {np.allclose(R_d + T_d, 1)}, Klein-Gordon {np.allclose(R_kg + T_kg, 1)}") .. image-sg:: /api/gallery/quantum/relativistic/images/sphx_glr_plot_klein_paradox_002.png :alt: Klein tunneling persists for arbitrarily tall steps :srcset: /api/gallery/quantum/relativistic/images/sphx_glr_plot_klein_paradox_002.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none R + T = 1 everywhere: Dirac True, Klein-Gordon True .. GENERATED FROM PYTHON SOURCE LINES 72-78 Check ----- Probability flux is conserved; there is total reflection for |E - V0| < m; in the Klein zone the spin-0 particle shows superradiant reflection (R > 1) while the Dirac particle never does; and Dirac transmission tends to 4 kappa / (1 + kappa)^2 for an infinite step. .. GENERATED FROM PYTHON SOURCE LINES 78-84 .. code-block:: Python assert np.allclose(R_d + T_d, 1) and np.allclose(R_kg + T_kg, 1) gap = (V0 > E - m + 0.01) & (V0 < E + m - 0.01) assert np.allclose(R_d[gap], 1) and np.allclose(R_kg[gap], 1) klein = V0 > E + m + 0.01 assert np.all(R_kg[klein] > 1) and np.all(R_d[klein] <= 1) assert abs(T_big[-1] - 4 * kinf / (1 + kinf) ** 2) < 1e-4 .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.110 seconds) .. _sphx_glr_download_api_gallery_quantum_relativistic_plot_klein_paradox.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_klein_paradox.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_klein_paradox.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_klein_paradox.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_