Chapitre 20

Activités Python

Radioactivité et décroissance

Activité

Simuler la décroissance radioactive

Consigne

Ouvrez la page des scripts du chapitre pour consulter le code et télécharger les fichiers .py.

Le chapitre 19 simulait une équation différentielle par la méthode d’Euler : un algorithme déterministe. La radioactivité appelle l’angle opposé — simuler le hasard lui-même, et regarder la loi émerger. C’est l’expérience des dés du §6.1, en plus grand.

Le principe suit la définition de λ\lambda : pendant le pas très court de 1s1\ \text{s}, et parce que λ\lambda est petit, chaque noyau encore présent se désintègre avec une probabilité approximativement égale à λ\lambda. La fonction random() du module random renvoie un nombre au hasard entre 0 et 1 : l’événement « random() <= proba » se produit donc avec la probabilité proba — c’est notre noyau qui se désintègre.

Le script Ch20_simulation.py (dossier scripts/) parcourt, seconde après seconde, les noyaux restants — listes et boucles, sans aucune bibliothèque de calcul. Il s’exécute tel quel, à une ligne près (# À COMPLÉTER).

(La suite — tracé de la simulation et superposition de la loi N0eλtN_0\,e^{-\lambda t} — est fournie et n’est pas à modifier.) Le résultat est la courbe déjà rencontrée au §6.4 : le nuage stochastique épouse la loi de décroissance.

Questions :

  1. Compléter la valeur de proba à partir de la définition de λ\lambda et de l’approximation expliquée ci-dessus.
  2. Exécuter deux fois le script : les courbes obtenues sont-elles identiques ? Recommencer avec N0 = 20 : que change-t-on, et que retrouve-t-on du §6.1 ?
  3. Relever sur la courbe la date à laquelle il reste 1 000 noyaux (la moitié), et comparer à t1/2=ln2/λt_{1/2} = \ln 2/\lambda.

O5 - Python (listes, boucles, append) : tout y est rappelé.

Script élève

# -*- coding: utf-8 -*-
"""Chapitre 20 — Simulation stochastique de la décroissance radioactive.

À chaque pas de 1 s, chaque noyau restant se désintègre avec une
probabilité approximativement égale à lam, car lam est très petit.
Le script superpose la simulation à la loi N = N0 exp(-lam * t).
"""
import math
import random

import matplotlib.pyplot as plt


lam = 0.01   # constante radioactive (s^-1)
N0 = 2000    # noyaux présents à t = 0

proba = 0.005  # À COMPLÉTER : probabilité de désintégration pendant 1 s

ts = [0]     # dates (pas de 1 s)
Ns = [N0]    # nombres de noyaux restants
while Ns[len(Ns) - 1] > N0 / 100:
    n_desintegrations = 0
    for i in range(Ns[len(Ns) - 1]):
        if random.random() <= proba:
            n_desintegrations = n_desintegrations + 1
    Ns.append(Ns[len(Ns) - 1] - n_desintegrations)
    ts.append(ts[len(ts) - 1] + 1)

# ---- Tracé fourni, à ne pas modifier ---------------------------------
N_exact = []
for t in ts:
    N_exact.append(N0 * math.exp(-lam * t))

plt.plot(ts, Ns, ".", markersize=3, label="simulation (hasard)")
plt.plot(ts, N_exact, "-", label="loi du cours : $N_0\\,e^{-\\lambda t}$")
plt.xlabel("t (s)")
plt.ylabel("N (noyaux restants)")
plt.legend()
plt.grid(True, alpha=0.3)
plt.title("Décroissance radioactive : le hasard redonne la loi")
plt.show()

← Retour au portail du chapitre