Programmet på denne side er en beregning ikke en simulering.
Programmet her bruger henfaldsloven til at beregne en række tal som plottes grafisk.
For en rigtig simulering af radioaktiv henfald med en random generator klik her.
Henfaldsloven kan skrives som stående her nedenunder.
Antal kerner der henfalder (dN/dt) er lige med - henfaldskonstanten ganget med antal kerner.
Ganger man dt på højre side kan det skrives som:
Opgave1 :
Design et program som bruger viser to radioaktive henfald.
Startbetingelserne er her:
import matplotlib.pyplot as plt
n1 = 1000 #antal kerner til start
n2 = 1000
n1_start=n1 #gemme startværdien
n2_start=n2
k1 = 0.005 #henfaldskonstanten
k2 = 0.014
dt = 1 # svarer til "tid"
t = 0.0 # start i tiden 0.0s
tlist = [] # en tom tidsliste til plot
n1list = [] # en tom liste til N-værdier
n2list = [] # ditto
Prøv nu at designe et while loop som kører 1000 gange og som hver gang
udfører linjen:
skriver det nye N1 til n1list
skriver det nye N2 til n2list
skriver det nye t til tlist
plotter både n1list og n2list som funktion af t
brug plot siden til at finde relevante plotkommandoer
Ide til while loopet!! Brug kun når du ikke kan finde ud at designe det selv
while t < 1000 :
n1 = n1 - n1*k1*dt
Her kommer det første program til simulering af radioaktiv henfald. Læg mærke til at det IKKE er med en random generator, men bare bruger formlen
N1 = N0 - N0 * k * tid
N2 = N1 - N1 * k * tid
N3 = N2 - N2 * k * tid
......
I dette eksempel er der to radioaktive henfald.
Se outputgrafen her:
Henfaldskonstanterne er hhv k1 og k2 og de justeres øverst i programmet.
Tidsspringet (1 sek hvis vi antager at vi arbejder i sekunder) er "dt = 1"
Det bliver brugt til at "tælle tiden op" så t = den samlede tid som jeg sætter her til 1000s. Tidsaksen bliver så skrevet til "tlist[ ]" som udgør x-aksen i grafen
Hele løsningen (lad være med at bruge den, du lærer ikke noget som helst)
import matplotlib.pyplot as plt
n1 = 1000
n2 = 1000
n1_start=n1
n2_start=n2
k1 = 0.005
k2 = 0.014
dt = 1
t = 0.0
tlist = []
n1list = []
n2list = []
while t < 1000 :
n1 = n1 - n1*k1*dt
n2 = n2 - n2*k2*dt
t = t + dt
n1list.append(n1)
n2list.append(n2)
tlist.append(t)
minlegende1=("k1 = {0} No={1}".format(k1,n1_start))
minlegende2=("k2 = {0} No={1}".format(k2,n2_start))
plt.xlabel("tid(s)")
plt.ylabel("antal henfald")
plt.title('Radioaktiv henfald af to nuklider')
plt.plot(tlist,n1list,"-b",label=minlegende1)
plt.plot(tlist,n2list,"-r",label=minlegende2)
plt.legend(loc='upper right')
plt.show()