@2014301020054
2016-10-09T16:34:28.000000Z
字数 1738
阅读 425
python physics
有两类核子A和B,其衰变的过程可以相互影响,相互转化,因而达到一种平衡的状态。给出了核子对于时间的微分方程:
其时间常数相同,τ取为1s.通过解这个方程组可以得到,和为常数且=. 现通过程序来模拟计算这个结果.
import pylab as plclass uranium_decay:def __init__(self, number_of_nuclei_A = 100,\number_of_nuclei_B = 0,time_constant_1 = 1,\time_constant_2 = 1, time_of_duration = 8,\time_step = 0.05):# unit of time is secondself.n1_uranium = [number_of_nuclei_A ]self.n2_uranium = [number_of_nuclei_B ]self.t = [0]self.tau1 = time_constant_1self.tau2 = time_constant_2self.dt = time_stepself.time = time_of_durationself.nsteps = int(time_of_duration // time_step + 1)print("Initial number of nuclei A ->", number_of_nuclei_A)print("Initial number of nuclei B ->", number_of_nuclei_B)print("Time constant A ->", time_constant_1)print("Time constant B ->", time_constant_2)print("time step -> ", time_step)print("total time -> ", time_of_duration)def calculate(self):for i in range(self.nsteps):tmp1 = self.n1_uranium[i] - self.n1_uranium[i] /self.\tau1 * self.dt+self.n2_uranium[i] / self.tau2 * self.dttmp2 = self.n2_uranium[i] - self.n2_uranium[i] /self.\tau2 *self.dt+self.n1_uranium[i] / self.tau1 * self.dtself.n1_uranium.append(tmp1)self.n2_uranium.append(tmp2)self.t.append(self.t[i] + self.dt)def show_results(self):pl.plot(self.t, self.n1_uranium)pl.plot(self.t, self.n2_uranium)pl.xlabel('time ($s$)')pl.ylabel('Number of Nuclei ')pl.legend(['$N_A$','$N_B$'])pl.show()a = uranium_decay()a.calculate()a.show_results()
运行

模拟
