.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/particle/radioactivity/plot_03_becquerel_uranium_plate.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_particle_radioactivity_plot_03_becquerel_uranium_plate.py: Becquerel's discovery: uranium rays on a photographic plate =============================================================== In February 1896 Henri Becquerel, testing whether phosphorescent salts emit X-rays after exposure to sunlight, left a uranium salt on a plate wrapped in black paper, with a copper cross in between, in a drawer during several overcast days. When he developed it the plate was strongly darkened, showing the cross in silhouette. The salt had not been in the sun. The emission came from the uranium itself, needed no excitation, and did not fade. This example estimates the salt's activity with :func:`~physicskit.particle.decays.decay_constant` and :func:`~physicskit.particle.decays.activity`, builds a simulated plate from the individual decays, and contrasts the steady "uranium rays" with the phosphorescence Becquerel expected, which fades within hours. .. GENERATED FROM PYTHON SOURCE LINES 21-29 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from physicskit.constants import AVOGADRO from physicskit.particle.decays import activity, decay_constant, radioactive_decay_number YEAR = 365.25 * 24 * 3600.0 .. GENERATED FROM PYTHON SOURCE LINES 30-37 How active is a gram of uranium salt? ----------------------------------------- Potassium uranyl sulfate, :math:`\mathrm{K_2UO_2(SO_4)_2\cdot2H_2O}`, has one uranium atom per 576 g/mol. Uranium-238's half-life is 4.47 billion years. Its short-lived daughters (thorium-234, protactinium-234m) are in equilibrium with it and emit the beta rays that pass through black paper; each decays as often as the uranium does. .. GENERATED FROM PYTHON SOURCE LINES 37-52 .. code-block:: Python mass_g, molar_mass = 1.0, 576.0 N_U238 = 0.9927 * mass_g / molar_mass * AVOGADRO lam = decay_constant(4.468e9 * YEAR) A_U238 = activity(N_U238, lam) beta_rate = 2 * A_U238 # Th-234 and Pa-234m betas, in secular equilibrium print(f"U-238 atoms in 1 g of salt: {N_U238:.2e}") print(f"U-238 activity: {A_U238:,.0f} decays per second") print(f"beta emissions (daughters): {beta_rate:,.0f} per second") exposure = 5 * 24 * 3600.0 # five overcast days in the drawer decays = beta_rate * exposure fading = 1 - radioactive_decay_number(1.0, lam, exposure) print(f"betas emitted in 5 days: {decays:.2e}") print(f"fractional drop in activity over those 5 days: {fading:.1e} -- effectively constant") .. rst-class:: sphx-glr-script-out .. code-block:: none U-238 atoms in 1 g of salt: 1.04e+21 U-238 activity: 5,102 decays per second beta emissions (daughters): 10,204 per second betas emitted in 5 days: 4.41e+09 fractional drop in activity over those 5 days: 2.1e-12 -- effectively constant .. GENERATED FROM PYTHON SOURCE LINES 53-59 The plate ------------- Assume 2% of the betas cross the paper into the emulsion (the rest go the wrong way or stop in the salt) and spread them over a 4 x 4 cm plate under the crystals. The copper cross absorbs about 70% of them. Each grain is a Poisson count; darkening follows the count. .. GENERATED FROM PYTHON SOURCE LINES 59-84 .. code-block:: Python rng = np.random.default_rng(1896) n_px = 200 yy, xx = np.mgrid[-1 : 1 : n_px * 1j, -1 : 1 : n_px * 1j] salt = np.exp(-((np.hypot(xx, yy) / 0.8) ** 8)) # the crystals' footprint arm = 0.16 cross = ((np.abs(xx) < arm) & (np.abs(yy) < 0.6)) | ((np.abs(yy) < arm) & (np.abs(xx) < 0.6)) transmission = np.where(cross, 0.3, 1.0) hits_per_px = 0.02 * decays / salt.sum() def develop(t_exposure): counts = rng.poisson(hits_per_px * (t_exposure / exposure) * salt * transmission) return 1 - np.exp(-counts / (0.5 * hits_per_px)) # saturating optical density fig1, axes = plt.subplots(1, 3, figsize=(12, 4.2)) for ax, (label, t) in zip(axes, [("1 hour", 3600.0), ("1 day", 86400.0), ("5 days", exposure)]): ax.imshow(develop(t), cmap="gray_r", vmin=0, vmax=1) ax.set_title(f"exposure {label}") ax.set_xticks([]) ax.set_yticks([]) fig1.suptitle("Simulated plate under uranium salt and a copper cross, in the dark") fig1.tight_layout() .. image-sg:: /api/gallery/particle/radioactivity/images/sphx_glr_plot_03_becquerel_uranium_plate_001.png :alt: Simulated plate under uranium salt and a copper cross, in the dark, exposure 1 hour, exposure 1 day, exposure 5 days :srcset: /api/gallery/particle/radioactivity/images/sphx_glr_plot_03_becquerel_uranium_plate_001.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 85-91 Phosphorescence fades; uranium rays do not ---------------------------------------------- Becquerel expected the emission to be phosphorescence excited by sunlight, which dies away over hours. Instead the salt kept exposing plates for weeks, with or without light -- and so did non-phosphorescent uranium compounds and uranium metal. .. GENERATED FROM PYTHON SOURCE LINES 91-107 .. code-block:: Python t_h = np.linspace(0, 120, 400) phosphorescence = np.exp(-t_h / 3.0) # illustrative afterglow, 3-hour decay uranium = radioactive_decay_number(1.0, lam, t_h * 3600.0) fig2, ax2 = plt.subplots(figsize=(6, 3.8)) ax2.plot(t_h, phosphorescence, color="goldenrod", label="phosphorescent afterglow (expected)") ax2.plot(t_h, uranium, color="darkgreen", lw=2, label="uranium emission (observed)") ax2.set_xlabel("hours after sunlight") ax2.set_ylabel("relative emission rate") ax2.set_ylim(0, 1.1) ax2.set_title("Becquerel's surprise: the emission never faded") ax2.legend(fontsize=8) fig2.tight_layout() plt.show() .. image-sg:: /api/gallery/particle/radioactivity/images/sphx_glr_plot_03_becquerel_uranium_plate_002.png :alt: Becquerel's surprise: the emission never faded :srcset: /api/gallery/particle/radioactivity/images/sphx_glr_plot_03_becquerel_uranium_plate_002.png :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 108-112 Check ----- U-238's specific activity is 12.4 kBq per gram of uranium; at a 4.5-Gyr half-life the activity does not change over the exposure. .. GENERATED FROM PYTHON SOURCE LINES 112-114 .. code-block:: Python assert abs(A_U238 / (12_445 * 238.05 / molar_mass * 0.9927) - 1) < 0.01 assert abs(fading - lam * exposure) < 1e-15 and fading < 1e-10 .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.103 seconds) .. _sphx_glr_download_api_gallery_particle_radioactivity_plot_03_becquerel_uranium_plate.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_03_becquerel_uranium_plate.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_03_becquerel_uranium_plate.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_03_becquerel_uranium_plate.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_