Index de l'article

Physique - Décroissance radioactive

Source

Extrait d'un manuel de physique. Le script du doc 2 ne fonctionne pas mais il donne des idées

"Comprendre" le script (qui ne fonctionne pas ;)

Les problèmes de ce script sont:

  • randint nécessite la bibliothèque random
  • plt.scatter et plt.show nécessite la bibliothèque matplotlib.pyplot

L'esprit du programme semble être:

  • J'ai N0 atomes radioactifs
  • Tant qu'il en reste :
    • J'ajoute à ma liste L le nombre d'atome radioactif 
    • Boucle for
      • Je tire pour chaque atome la probabilité qu'il se désintègre (1/50) et je les compte avec s
      • A la fin de ce round de désintégration, donc en sortant de la boucle for, je dois faire mes comptes
    • Je repars alors avec un nouveau nombre d'atomes radioactif et je recommence tant qu'il en reste
  • Pour le graphique je crée une liste t ayant le même nombre de valeurs que la liste L, t représente ici les n° des rounds

Des print() pour comprendre...

Soit 10 atomes radioactifs, pour faire simple et rapide.

import matplotlib.pyplot as plt
from random import randint
N=10
L=[]

while N>0:
    L.append(N)
    s=0
    print(N)# impression pour comprendre
    for i in range (N):
        print(i,s,N)# impression pour comprendre
        if randint(1,50)==1:
            s=s+1
    N=N-s
        
print("Evolution du nombre de noyaux restants: N = ",L)
t=[i for i in range (len(L))]

plt.plot(t,L,'.',color="blue")
plt.show()

Je comprends :

  • Round 1 - 10 atomes rad / Aucune désintégration / Reste donc 10 atomes
  • Round 2 - idem
  • ...
  • Round 6 - idem
  • Round 7 - 10 atomes rad / 1 désintégration / Reste donc 9 atomes
  • Round 8 - 9 atomes / Aucune désintégration / Reste donc 9 atomes
  • Round 9 - 9 atomes / 2 désintégrations / Reste donc 6 atomes
  • ...

Script final

Vous pouvez le commenter maintenant ;)

import matplotlib.pyplot as plt
from random import randint
N=int(input("Saisir le nbre initial de noyaux en valeur entière (ex 10000): N0="))
L=[]

while N>0:
    L.append(N)
    s=0
    for i in range (N):
        if randint(1,50)==1:
            s=s+1
    N=N-s
        
print("Evolution du nombre de noyaux restants: N = ",L)
t=[i for i in range (len(L))]

plt.plot(t,L,'.',color="blue")
plt.show()