Page 2 sur 5
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()