@yyyyao
2016-10-10T00:35:40.000000Z
字数 1913
阅读 375
许多物理问题都需要用常微分方程来解决。比如说抛物运动,简谐运动和天体力学等。衰变问题是一类很普遍的可以用一阶常微分方程解决的问题。本题是用常微分的方法解决两种粒子相互衰变转化的问题,基本出发点是用泰勒展开,再取近似。最后需用不同的“step sizes”测试程序是否正确。
关键词: 衰变 转化 一阶 常微分方程 泰勒展开 测试
题目:在一个系统中,有两种可衰变的原子A和B。其中A会衰变成B,B会衰变成A。因为A衰变成B的这个过程是可逆的,所以严格意义上来说,这并不是一个“衰变”。一个更恰当的说法是在这个系统中AB两种原子可以互相转化且保持能量不变。描述这个过程的速率方程是
一,题目分析
在t=0时对原子数量做泰勒展开
其中误差项为的取值为。又由衰变过程的速率方程得
二,代码模拟
import pylab as pl
Number_A=[]
Number_B=[]
t=[]
print("the number of A nuclei is")
number_a=input()
Number_A.append(number_a)
print("the number of B nuclei is")
number_b=input()
Number_B.append(number_b)
print("the time of decay is")
t_decay=input()
print("the time step is")
dt=input()
t.append(0.0)
for i in range(100):
NA=Number_A[i]+((Number_B[i]-Number_A[i])/t_decay)*dt
NB=Number_B[i]+((Number_A[i]-Number_B[i])/t_decay)*dt
tadd=t[i]+dt
Number_A.append(NA)
Number_B.append(NB)
t.append(tadd)
t_max=t[-1]
pl.plot(t,Number_A,'red')
pl.plot(t,Number_B,'green')
pl.title('the decay between A and B')
pl.xlabel('the time of decay')
pl.ylabel('number of nuclei')
pl.show()
三,图像
初始条件 ,,,时的图像:
初始条件 ,,,时的图像:
初始条件 ,,,时的图像:
在这样一个系统中,两种原子的数目最终会趋于一致。此时和的数目恒定不变,系统达到稳定状态。在这样一个稳定的状态下,和关于时间的导数为0 。
本次作业参考了书上的算法及老师上课所使用的PPT,同时为了写公式还查了下letex的语法,在此表示感谢。同时不足之处欢迎大家指正!