[关闭]
@c-xy 2016-10-09T14:29:38.000000Z 字数 1144 阅读 226

第四次作业

双原子衰变


Python源代码如下:

  1. import pylab
  2. class decay_problem:
  3. def __init__(self, number_of_nuclei_A = 100, number_of_nuclei_B = 0 , time_constant = 1, time_of_duration = 5, time_step = 0.05):
  4. self.n_uranium_A = [number_of_nuclei_A]
  5. self.n_uranium_B = [number_of_nuclei_B]
  6. self.t = [0]
  7. self.tau = time_constant
  8. self.dt = time_step
  9. self.time = time_of_duration
  10. self.nsteps = int(time_of_duration // time_step + 1)
  11. print("Initial number of nuclei A ->", number_of_nuclei_A)
  12. print("Initial number of nuclei B ->", number_of_nuclei_B)
  13. print("Time constant ->", time_constant)
  14. print("time step -> ", time_step)
  15. print("total time -> ", time_of_duration)
  16. def calculate(self):
  17. for i in range(self.nsteps):
  18. tmp_A = self.n_uranium_A[i] - self.n_uranium_A[i] / self.tau * self.dt+self.n_uranium_B[i] / self.tau * self.dt
  19. tmp_B = self.n_uranium_B[i] - self.n_uranium_B[i] / self.tau * self.dt+self.n_uranium_A[i] / self.tau * self.dt
  20. self.n_uranium_A.append(tmp_A)
  21. self.n_uranium_B.append(tmp_B)
  22. self.t.append(self.t[i] + self.dt)
  23. def show_results(self):
  24. pylab.plot(self.t, self.n_uranium_A)
  25. pylab.plot(self.t, self.n_uranium_B)
  26. pylab.xlabel('time ($s$)')
  27. pylab.ylabel('Number of Nuclei A and B')
  28. pylab.show()
  29. a = decay_problem()
  30. a.calculate()
  31. a.show_results()

结果展示
从图片中可以看出,两种原子数目在一段时间后达到平衡,数量都等于50.

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