[关闭]
@2014301020054 2016-10-09T16:34:28.000000Z 字数 1738 阅读 425

Exercise_4:Decay Simulation

python physics


摘要


背景介绍


正文

题目:

有两类核子A和B,其衰变的过程可以相互影响,相互转化,因而达到一种平衡的状态。给出了核子对于时间的微分方程:

其时间常数相同,τ取为1s.通过解这个方程组可以得到,为常数且=. 现通过程序来模拟计算这个结果.

解答

代码

  1. import pylab as pl
  2. class uranium_decay:
  3. def __init__(self, number_of_nuclei_A = 100,\
  4. number_of_nuclei_B = 0,time_constant_1 = 1,\
  5. time_constant_2 = 1, time_of_duration = 8,\
  6. time_step = 0.05):
  7. # unit of time is second
  8. self.n1_uranium = [number_of_nuclei_A ]
  9. self.n2_uranium = [number_of_nuclei_B ]
  10. self.t = [0]
  11. self.tau1 = time_constant_1
  12. self.tau2 = time_constant_2
  13. self.dt = time_step
  14. self.time = time_of_duration
  15. self.nsteps = int(time_of_duration // time_step + 1)
  16. print("Initial number of nuclei A ->", number_of_nuclei_A)
  17. print("Initial number of nuclei B ->", number_of_nuclei_B)
  18. print("Time constant A ->", time_constant_1)
  19. print("Time constant B ->", time_constant_2)
  20. print("time step -> ", time_step)
  21. print("total time -> ", time_of_duration)
  22. def calculate(self):
  23. for i in range(self.nsteps):
  24. tmp1 = self.n1_uranium[i] - self.n1_uranium[i] /self.\
  25. tau1 * self.dt+self.n2_uranium[i] / self.tau2 * self.dt
  26. tmp2 = self.n2_uranium[i] - self.n2_uranium[i] /self.\
  27. tau2 *self.dt+self.n1_uranium[i] / self.tau1 * self.dt
  28. self.n1_uranium.append(tmp1)
  29. self.n2_uranium.append(tmp2)
  30. self.t.append(self.t[i] + self.dt)
  31. def show_results(self):
  32. pl.plot(self.t, self.n1_uranium)
  33. pl.plot(self.t, self.n2_uranium)
  34. pl.xlabel('time ($s$)')
  35. pl.ylabel('Number of Nuclei ')
  36. pl.legend(['$N_A$','$N_B$'])
  37. pl.show()
  38. a = uranium_decay()
  39. a.calculate()
  40. a.show_results()

运行结果


结论


致谢

Lesson plan of Cai Hao:Chapter 1

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注