@zy-0815
2016-10-09T13:49:42.000000Z
字数 1967
阅读 1213
经过一段时间的学习,我们已经掌握了一定的语法和语言,而此次作业就是用Euler法解决常微分方程。
学习计算物理的原因就是学习用计算机解决物理实际问题,而这次作业便是让我们开始解决实际问题,加以应用。
由题可得,方程组为:
import pylab as plclass uranium_decay:def __init__(self, number_of_nuclei_A = 100, number_of_nuclei_B = 0, time_constant = 1, time_of_duration = 5, time_step = 0.05):# unit of time is secondself.n_uranium_A = [number_of_nuclei_A]self.n_uranium_B = [number_of_nuclei_B]self.t = [0]self.tau = time_constantself.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 ->", time_constant)print("time step -> ", time_step)print("total time -> ", time_of_duration)def calculate(self):for i in range(self.nsteps):tmp1 = self.n_uranium_A[i] + (self.n_uranium_B[i] - self.n_uranium_A[i]) / self.tau * self.dttmp2 = self.n_uranium_B[i] + (self.n_uranium_A[i] - self.n_uranium_B[i]) / self.tau * self.dtself.n_uranium_A.append(tmp1)self.n_uranium_B.append(tmp2)self.t.append(self.t[i] + self.dt)def show_results(self):plot1, = pl.plot(self.t, self.n_uranium_A,'b')plot2, = pl.plot(self.t, self.n_uranium_B,'g')pl.title('Nuclei Decay')pl.xlabel('time ($s$)')pl.ylabel('Number of Nuclei')first_legend=pl.legend([plot1, plot2], ['Particle A', 'Particle B'], loc="best")pl.show()a = uranium_decay()a.calculate()a.show_results()
(1)运行上面程序可以得出如下结果:
(2)虽然写出了程序,也得出了结果,但是不知道为什么PPT中有些语法的含义,删去之后便可以运行,如a.store_results()。感觉还要自己多查多练。
感谢宗玥同学提供的作业部落VIP账号,同时告诉我一些LaTeX公式编辑的语法。