[关闭]
@yyyyao 2016-10-10T00:35:40.000000Z 字数 1913 阅读 375

exercise_04:可衰变原子A和B的相互转换


1.摘要

许多物理问题都需要用常微分方程来解决。比如说抛物运动,简谐运动和天体力学等。衰变问题是一类很普遍的可以用一阶常微分方程解决的问题。本题是用常微分的方法解决两种粒子相互衰变转化的问题,基本出发点是用泰勒展开,再取近似。最后需用不同的“step sizes”测试程序是否正确。

关键词: 衰变 转化 一阶 常微分方程 泰勒展开 测试

2.背景介绍

题目:在一个系统中,有两种可衰变的原子A和B。其中A会衰变成B,B会衰变成A。因为A衰变成B的这个过程是可逆的,所以严格意义上来说,这并不是一个“衰变”。一个更恰当的说法是在这个系统中AB两种原子可以互相转化且保持能量不变。描述这个过程的速率方程是


为了简便,我们假设这两种衰变的衰变周期都为 。解这个方程中原子 关于时间的方程。考虑不同的初始条件,例如=100, =0, =1s。


3.正文

一,题目分析

在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()

三,图像
初始条件 ,,,时的图像:
A=100,B=0,$\tau=1$s,$\Delta t$=0.05s

初始条件 ,,,时的图像:
A=100,B=0,$\tau=1$s,$\Delta t$=0.1s

初始条件 ,,,时的图像:
A=80,B=20,$\tau=1$s,$\Delta t$=0.05s


4.结论

在这样一个系统中,两种原子的数目最终会趋于一致。此时的数目恒定不变,系统达到稳定状态。在这样一个稳定的状态下,关于时间的导数为0 。


5.致谢

本次作业参考了书上的算法及老师上课所使用的PPT,同时为了写公式还查了下letex的语法,在此表示感谢。同时不足之处欢迎大家指正!

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