D'où vient la radioactivité naturelle que l'on détecte autour de nous, et comment écrire, vérifier et comparer les transformations nucléaires ?
Objectifs
- Mesurer une radioactivité naturelle et le bruit de fond.
- Calculer la composition d'un noyau et repérer des isotopes.
- Comparer l'énergie libérée par kilogramme de différents combustibles.
- Utiliser les lois de conservation pour compléter une équation.
Compétences travaillées
- Réaliser : mesurer un comptage et le répéter.
- Analyser : tenir compte du bruit de fond.
- Valider : vérifier une équation par le calcul.
- Communiquer : comparer des ordres de grandeur sur un graphique.
Le code s'exécute réellement dans ton navigateur. Au premier clic sur ▶ Exécuter, Python se télécharge (≈ 7 Mo, une seule fois, connexion Internet nécessaire). Le bouton Télécharger .py donne un fichier utilisable dans EduPython, Thonny, Basthon ou Capytale.
Raccourcis : Ctrl + Entrée exécute, Tab décale la ligne de 4 espaces.
Débutant en Python : fais les cinq activités dans l'ordre, en t'aidant des indices. À l'aise avec les variables et les boucles (en général à partir du deuxième trimestre) : l'activité 1 est facultative, commence directement à l'activité 2 et vise l'activité 5 sans indice.
Matériel
- un compteur de radioactivité (type Geiger) avec affichage du nombre de coups ;
- un chronomètre ;
- un morceau de granite ;
- un sachet de 500 g de « sel de régime » sans sodium (chlorure de potassium KCl, en vente libre).
Protocole
| Coups par minute | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| Bruit de fond | |||||
| Granite | |||||
| Sel de potassium |
Jeu de données pédagogique Bruit de fond : 22 ; 18 ; 25 ; 20 ; 19. Granite : 41 ; 37 ; 45 ; 39 ; 43. Sel de potassium : 63 ; 58 ; 66 ; 61 ; 60 (coups par minute). Valeurs typiques d'un compteur de lycée ; elles dépendent de l'appareil et du lieu.
Le potassium naturel contient une petite proportion (0,012 %) de potassium 40, radioactif. Un de ses modes de désintégration est \({}^{40}_{19}\text{K} \rightarrow {}^{40}_{20}\text{Ca} + {}^{\;\,0}_{-1}\text{e}\) : l'électron émis est détecté par le compteur. Le granite contient, lui, des traces d'uranium, de thorium et de potassium 40.
Les désintégrations se produisent au hasard : on ne peut pas prévoir quand un noyau donné va se désintégrer. Le nombre de coups en 1 min fluctue donc d'une mesure à l'autre ; on fait plusieurs mesures et on calcule une moyenne. Le bruit de fond (rayonnement venant du sol, de l'air, de l'espace) est toujours présent : pour connaître la contribution de l'échantillon seul, il faut le soustraire du comptage.
À partir de \(Z\) et \(A\), il calcule le nombre de neutrons du noyau et indique s'il contient plus de neutrons que de protons. Comment lire le résultat ? Trois nombres (protons, neutrons, nucléons) et une phrase.
À faire : complète le calcul de N, exécute, puis teste avec le calcium 40 (\(Z = 20\)) et l'uranium 238 (\(Z = 92\)).
N = A - Znom = "potassium 40"
Z = 19
A = 40
N = A - Z
print(nom, ":", Z, "protons,", N, "neutrons,", A, "nucléons")
if N > Z:
print("Ce noyau contient plus de neutrons que de protons.")
else:
print("Ce noyau ne contient pas plus de neutrons que de protons.")
Résultats attendus. Potassium 40 : 19 protons, 21 neutrons. Calcium 40 : 20 protons, 20 neutrons (pas plus de neutrons). Uranium 238 : 92 protons, 146 neutrons.
Interprétation. Le potassium 40 et le calcium 40 ont le même nombre de nucléons : lors de la désintégration, un neutron du potassium s'est transformé en proton, avec émission d'un électron. Les noyaux lourds, comme l'uranium, contiennent beaucoup plus de neutrons que de protons.
Erreurs fréquentes. Écrire N = Z - A : on obtient −21, un nombre de particules négatif, ce qui est absurde.
Il parcourt une liste de noyaux présents dans les roches et le sel, calcule leur nombre de neutrons, et signale les isotopes du potassium (\(Z = 19\)). Comment lire le résultat ? Une ligne par noyau ; certaines lignes sont marquées « isotope du potassium ».
À faire : complète le calcul de N dans la boucle, exécute, puis réponds à Q2.
i est Z[i].N = A[i] - Z[i]noms = ["K-39", "K-40", "K-41", "Ca-40", "Ar-40", "Th-232", "U-235", "U-238"]
Z = [19, 19, 19, 20, 18, 90, 92, 92]
A = [39, 40, 41, 40, 40, 232, 235, 238]
for i in range(len(noms)):
N = A[i] - Z[i]
if Z[i] == 19:
remarque = "isotope du potassium"
else:
remarque = ""
print(noms[i], ": Z =", Z[i], "| N =", N, "| A =", A[i], "|", remarque)
Résultats attendus. K-39, K-40 et K-41 sont signalés (20, 21 et 22 neutrons). Ca-40 a 20 neutrons, Ar-40 en a 22, Th-232 en a 142, U-235 en a 143 et U-238 en a 146.
Interprétation. Les trois isotopes du potassium ont le même \(Z\) mais des nombres de neutrons différents. U-235 et U-238 sont aussi deux isotopes, de l'uranium cette fois : en modifiant la condition (Z[i] == 92), le programme les repère.
Erreurs fréquentes. Tester A[i] == 40 : on regrouperait K-40, Ca-40 et Ar-40, qui ne sont pas des isotopes (trois éléments différents).
Non : ils ont des numéros atomiques différents (19, 20 et 18), ce sont trois éléments différents. Le lien est nucléaire : le potassium 40 se désintègre le plus souvent en calcium 40 (un neutron devient un proton, un électron est émis), et parfois en argon 40 (un proton devient un neutron). Dans les deux cas, le nombre de nucléons \(A = 40\) est conservé.
Il compare l'énergie libérée par 1 kg de combustible, de \(1{,}5\times10^{7}\ \text{J}\) (bois) à \(3{,}4\times10^{14}\ \text{J}\) (fusion deutérium-tritium). Pourquoi un logarithme ? Ces valeurs sont trop différentes pour tenir sur un même axe ordinaire : la barre du bois serait invisible. On trace donc \(\log_{10}(E)\), c'est-à-dire, en gros, l'exposant de la puissance de 10 : 7,2 pour \(1{,}5\times10^{7}\). Comment le lire ? Une graduation de plus signifie une énergie 10 fois plus grande.
À faire : complète le calcul de y, exécute, puis compte le nombre de puissances de 10 entre le pétrole et l'uranium.
i.i de la liste E.y = math.log10(E[i])import math
import matplotlib.pyplot as plt
noms = ["bois", "charbon", "pétrole", "U 235", "fusion D-T"]
E = [1.5e7, 3.0e7, 4.2e7, 8.2e13, 3.4e14]
for i in range(len(noms)):
y = math.log10(E[i])
plt.plot([i, i], [0, y], '-', color='orange', linewidth=18)
plt.text(i - 0.35, y + 0.6 + 1.2 * (i % 2), noms[i]) # un nom sur deux plus haut : pas de chevauchement
print(noms[i], ": log10(E) =", round(y, 1))
plt.title("Énergie libérée par 1 kg de combustible")
plt.xlabel("combustible")
plt.ylabel("log10(E en J)")
plt.xlim(-0.8, 5.2)
plt.ylim(0, 18)
plt.grid()
plt.show()
Résultats attendus. \(\log_{10}(E)\) vaut 7,2 (bois), 7,5 (charbon), 7,6 (pétrole), 13,9 (U 235, fission de l'uranium 235) et 14,5 (fusion D-T).
Interprétation. Entre le pétrole et l'uranium, il y a environ 6 graduations, soit un facteur \(10^{6}\) : la fission libère environ 2 millions de fois plus d'énergie par kilogramme que la combustion du pétrole. La fusion D-T fait encore environ 4 fois mieux que la fission. Les trois combustions sont très proches : ce sont toutes des transformations chimiques, qui mettent en jeu quelques eV par molécule, contre des MeV par noyau pour les transformations nucléaires.
Erreurs fréquentes. Tracer directement E[i] au lieu de son logarithme : seules les barres nucléaires seraient visibles, les combustibles chimiques paraîtraient nuls.
Une équation nucléaire est décrite par quatre listes : les nombres de nucléons \(A\) et les charges \(Z\) des noyaux et particules avant et après la réaction, sauf une particule inconnue. Les lois de conservation donnent :
La fonction nom (fournie) reconnaît ensuite la particule. En Python, sum(liste) donne la somme des éléments d'une liste. Comment lire le résultat ? Pour chaque réaction : \(A\), \(Z\) et le nom de la particule manquante.
À faire : complète la fonction manquant, exécute, puis réponds à Q3.
sum(A_ap).A = sum(A_av) - sum(A_ap) et Z = sum(Z_av) - sum(Z_ap).def manquant(A_av, Z_av, A_ap, Z_ap):
A = sum(A_av) - sum(A_ap)
Z = sum(Z_av) - sum(Z_ap)
return A, Z
def nom(A, Z):
if A == 1 and Z == 0:
return "neutron"
if A == 1 and Z == 1:
return "proton"
if A == 0 and Z == -1:
return "électron"
if A == 0 and Z == 1:
return "positon"
if A == 4 and Z == 2:
return "particule alpha (noyau d'hélium)"
return "noyau de numéro atomique " + str(Z)
# chaque réaction : [nom, A avant, Z avant, A après, Z après]
reactions = [
["K-40 -> Ca-40 + ?", [40], [19], [40], [20]],
["U-238 -> Th-234 + ?", [238], [92], [234], [90]],
["P-30 -> Si-30 + ?", [30], [15], [30], [14]],
["H-2 + H-3 -> He-4 + ?", [2, 3], [1, 1], [4], [2]],
["n + U-235 -> Ba-141 + Kr-92 + 2 n + ?", [1, 235], [0, 92], [141, 92, 1, 1], [56, 36, 0, 0]],
]
for r in reactions:
A, Z = manquant(r[1], r[2], r[3], r[4])
print(r[0], ": A =", A, "; Z =", Z, "->", nom(A, Z))
Résultats attendus.
- K-40 : \((0, -1)\), électron ;
- U-238 : \((4, 2)\), particule alpha ;
- P-30 : \((0, 1)\), positon ;
- fusion D-T : \((1, 0)\), neutron ;
- fission : \((1, 0)\), neutron : la réaction libère en tout 3 neutrons.
Interprétation. Deux lois suffisent pour compléter n'importe quelle équation nucléaire : conservation du nombre de nucléons et conservation de la charge. La ligne A, Z = manquant(...) range dans deux variables les deux valeurs renvoyées par la fonction.
Erreurs fréquentes. Oublier de compter les neutrons produits dans la fission : sans les deux 1 dans A_ap, on trouverait \(A = 3\), \(Z = 0\), un « noyau » qui n'existe pas.
manquant([14], [6], [14], [7]) donne \((0, -1)\) : un électron. C'est la désintégration du carbone 14, utilisée pour la datation. manquant([1, 14], [0, 7], [14], [6]) donne \((1, 1)\) : un proton. C'est la réaction qui fabrique le carbone 14 dans la haute atmosphère, quand des neutrons issus du rayonnement cosmique frappent des noyaux d'azote.
Malik veut calculer l'énergie libérée par la fission de 1,0 kg d'uranium 235 (200 MeV par fission, masse d'un noyau \(3{,}90\times10^{-25}\ \text{kg}\)) et la masse de charbon qui libérerait la même énergie (\(3{,}0\times10^{7}\ \text{J}\) par kg). Son programme contient quatre erreurs : deux l'empêchent de fonctionner, deux donnent un résultat faux sans message. Le résultat attendu est celui de l'exercice 7 : environ \(8{,}2\times10^{13}\ \text{J}\) et 2 700 tonnes de charbon.
print ; E_fision → E_fission ; 1.60e-13 ; N = m / m_noyau.m = 1.0
m_noyau = 3.90e-25
E_fission = 200 * 1.60e-13 # erreur 3 : 1 MeV = 1,60 × 10^-13 J
N = m / m_noyau # erreur 4 : on divise la masse totale par celle d'un noyau
E = N * E_fission # erreur 2 : nom de variable
m_charbon = E / 3.0e7
print("Énergie libérée :", round(E / 1e13, 2), "× 10^13 J")
print("Charbon équivalent :", round(m_charbon / 1000), "tonnes") # erreur 1
Erreur 1 (bloquante). La parenthèse du dernier print n'est pas fermée : erreur de syntaxe.
Erreur 2 (bloquante). E_fision n'existe pas : NameError.
Erreur 3 (silencieuse). 1.60e13 au lieu de 1.60e-13 : l'énergie d'une fission serait \(3{,}2\times10^{15}\ \text{J}\), autant que la combustion de 100 000 tonnes de charbon, pour un seul noyau !
Erreur 4 (silencieuse). En multipliant, on obtient \(3{,}9\times10^{-25}\) « noyaux » : moins d'un noyau dans 1 kg, ce qui est absurde.
Résultat après correction. Énergie libérée : 8.21 × 10^13 J et Charbon équivalent : 2735 tonnes, en accord avec l'exercice 7.
On sait qu'un kilogramme de combustible nucléaire libère beaucoup plus d'énergie qu'un kilogramme de charbon (\(3\times10^{7}\ \text{J}\)) : un résultat nul à 10^13 J près (en fait environ un milliardième de joule), et « 0 tonne » de charbon, est en contradiction complète avec le cours. On peut aussi afficher N : une valeur inférieure à 1 pour le nombre de noyaux dans 1 kg montre immédiatement l'erreur de calcul de N.
Le compteur détecte en permanence un bruit de fond (environ 20 coups par minute ici), dû au rayonnement du sol, de l'air et de l'espace. Le granite (environ 41 coups par minute) et le sel de potassium (environ 62) augmentent le comptage : ils contiennent des noyaux radioactifs naturels (uranium, thorium, potassium 40). Les désintégrations sont aléatoires, d'où la nécessité de répéter les mesures. Une transformation nucléaire s'écrit avec les symboles \({}^{A}_{Z}\text{X}\) et vérifie la conservation du nombre de nucléons et de la charge : ces deux lois permettent de trouver une particule manquante. Enfin, les transformations nucléaires libèrent environ un million de fois plus d'énergie par kilogramme que les combustions.
Grille d'auto-évaluation
A = je sais faire seul · B = avec un peu d'aide · C = partiellement · D = à retravailler.
| Compétence | A | B | C | D |
|---|---|---|---|---|
| Mesurer un comptage et tenir compte du bruit de fond | ||||
| Déterminer la composition d'un noyau | ||||
| Reconnaître des isotopes | ||||
| Comparer des ordres de grandeur d'énergie | ||||
| Compléter une équation par les lois de conservation | ||||
| Repérer une erreur par un ordre de grandeur |
Fiche professeur
Organisation
Durée totale estimée : 110 min. En séance de 1 h 30 : partie expérimentale et activités 1 à 3 ; activités 4 et 5 et conclusion en fin de séance, à la maison ou en séance suivante. Le parcours « à l'aise » (activité 1 facultative) fait gagner environ 10 min.
Préparation
Compteur de radioactivité (type Geiger) vérifié ; échantillon de granite ; sel de régime au chlorure de potassium (vente libre).
Sécurité
Les échantillons proposés sont très faiblement radioactifs (niveau naturel). Se laver les mains après manipulation, ne pas ingérer le sel.
Points de vigilance
Insister sur le caractère aléatoire des désintégrations (fluctuations des comptages) et sur la soustraction du bruit de fond.
Différenciation
Aide : Fournir la table des particules (n, p, e⁻, e⁺, α) pour l'activité 4.
Approfondissement : Faire calculer l'activité nette du sel et discuter l'ordre de grandeur de la dose reçue.
Évaluation (sur 20)
Composition des noyaux et isotopes (activités 1 et 2, 6 pts) ; équations nucléaires (activité 4 + Q3, 6 pts) ; activité 5 (4 pts) ; Q5 (4 pts).
Les corrections détaillées des activités Python et des questions sont dans les encadrés de chaque partie.
Pour consolider : exercices 3, 7 et 10, puis le quiz du cours.
Exercices corrigés Retour au cours