关于系统中两种原子相互转化的模拟问题


简述题目

在一个系统中,有两种放射性原子A和B,原子A会衰变成原子B,而原子B也会衰变成原子A。严格上来说,这并不是一个“衰变”循环。一个更加恰当的解释应当是这个系统在保持能量不变的状态下可以在原子A和B中相互转化。而描述这个过程的速率方程是这样的:


(0.1)
(0.1)

(0.2)
(0.2)

利用这个方程解决这个原子数分别为NA和NB的系统,同时:


衰变周期
衰变周期

方程的解析

假设某类原子的衰变方程为:

(1.1)
(1.1)

然后对一段时间内的原子数量做泰勒展开:
![(1.2)](http://latex.codecogs.com/png.latex?N(\Delta t)=N(0)+\frac{dN}{dt}\cdot\Delta t+\frac{1}{2} \cdot \frac{d^2 N}{dt^2}+...)
只取前两项,则有:
![(1.3)](http://latex.codecogs.com/png.latex?N(\Delta t)\approx N(0)+\frac{dN}{dt}\cdot\Delta t .)
对(1.1)方程做近似:
![(1.4)](http://latex.codecogs.com/png.latex?\frac{dN}{dt}=\lim(\Delta t \to 0)\frac{N(t+\Delta t)-N(t)}{t}\approx\frac{N(t+\Delta t)-N(t)}{\Delta t})
所以有:
![(1.5)](http://latex.codecogs.com/png.latex?N(t+\Delta t)\approx N(t)+\frac{dN}{dt}\cdot\Delta t.)
由(1.1),有:
![(1.6)](http://latex.codecogs.com/png.latex?N(t+\Delta t)\approx N(t)-\frac{N(t)}{t_{dcy}}\cdot\Delta t)

题目方程解析

令:
![(1.7)](http://latex.codecogs.com/png.latex?\Delta N(t)=N_{B}(t)-N_{A}(t))
由(1.3)知:
![(1.8.1)](http://latex.codecogs.com/png.latex?N_{A}(\Delta t)\approx N_{A}(0)+\frac{dN_{A}}{dt}\cdot\Delta t)
![(1.8.2)](http://latex.codecogs.com/png.latex?N_{B}(\Delta t)\approx N_{B}(0)+\frac{dN_{B}}{dt}\cdot\Delta t)
由(1.5)(1.7)知:
![(1.9.1)](http://latex.codecogs.com/png.latex?\begin{align}N_{A}(t+\Delta t)\approx N_{A}(t)+\frac{dN_{A}}{dt}\cdot \Delta t \&=N_{A}(t)+\frac{1}{t_{dcy}}\cdot\Delta N(t)\cdot\Delta t\end{align})
![(1.9.2)](http://latex.codecogs.com/png.latex?\begin{align}N_{B}(t+\Delta t)\approx N_{B}(t)+\frac{dN_{B}}{dt}\cdot \Delta t \&=N_{B}(t)-\frac{1}{t_{dcy}}\cdot\Delta N(t)\cdot\Delta t\end{align})

代码模拟

  • 我对c语言比较熟悉,所以先用c语言做模拟,之后再改成python
#include <stdio.h>
#include <math.h>
#define MAX 100
double dt;                  //time step
double t_decay;        //time of decay
double t[MAX];
double N_A[MAX],N_B[MAX];           //number of atoms of A or B
double t_max;
double initialize(double Number_A[],double Number_B[],double time_decay,double dt)  //initialize the system
{
    printf("initial number of A-atom ->\n");
    scanf("%lf",&Number_A[0]);
    printf("initila number of B-atom ->\n");
    scanf("%lf",&Number_B[0]);
    printf("the time of decaying ->");
    scanf("%lf",&time_decay);
    printf("time step ->");
    scanf("%lf",&dt);
    t[0]=0.0;
    return;
}
double calculate(double Number_A[],double Number_B[],double time_decay,double Delta_N)
{
    int i;
    for(i=0;i<MAX;i++)
    {
        Number_A[i+1]=Number_A[i]+((Number_B[i]-Number_A[i])/time_decay)*dt;
        Number_B[i+1]=Number_B[i]- ((Number_B[i]-Number_A[i])/time_decay)*dt;
        t[i+1]=t[i]+dt;
    }
    return;
}
double store(double Number_A[],double Number_B[],double t[])         //output the result
{
    FILE *fp_out;
    int i;
    fp_out=fopen("decay_AB.dat","w");
    for(i=0;i<MAX;i++)
    {
        fprintf(fp_out,"%lf\t%lf\t%lf\n",t[i],Number_A[i],Number_B[i]);
    }
    fclose(fp_out);
    return;
}
void main()
{
    initialize(N_A,N_B,t_decay,dt);
    calculate(N_A,N_B,t_decay,Delta_N);
    store(N_A,N_B,t);
}
  • python语言部分
import numpy as np
import pylab as pl
Number_A=[]    
Number_B=[]
t=[]
print("the number of A atoms ->")
number_a=input()
Number_A.append(number_a)
print("the number of B atoms ->")
number_b=input()
Number_B.append(number_b)
print("the time of decay ->")
t_decay=input()
print("the time step ->")
dt=input()
def Bigger(a,b):
    if a>b:
        return a
    else:
        return b
def Smaller(a,b):
    if a>b:
        return b
    else:
        return a
big=Bigger(Number_A[0],Number_B[0])
small=Smaller(Number_A[0],Number_B[0])
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,'r')
pl.plot(t,Number_B,'g')
pl.title('the decay between A and B')
pl.xlabel('the time of decaying')
pl.ylabel('number of atoms')
pl.xlim(0.0,t_max)
pl.ylim(small,big)
pl.show()

实际模拟(用python做的模拟,比C要方便直观一些)

模拟1

A原子数为100,B原子数为80,衰变周期为1s,time step为0.05s,模拟结果为:


模拟1

A原子数和B原子数逐渐趋于一致为90

模拟2

A原子数为100,B原子数为0,衰变周期为1.5s,time step为0.06s,模拟结果为:


模拟2

A原子数与B原子数依旧趋于一致

结论

在这样一个系统中,两种原子的数量会逐渐趋于一致,且两种原子数量的变化率变为0.实际上是A原子与B原子处于相互转化的动态平衡中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,719评论 0 33
  • 不支持上传文件,所以就复制过来了。作者信息什么的都没删。对前端基本属于一窍不通,所以没有任何修改,反正用着没问题就...
    全栈在路上阅读 1,948评论 0 2
  • 做最好的自己 人一辈子都在省着,攒着,不论多抠,钱还是没存够。一辈子都在忍着,让着,...
    长不大的媛ye阅读 311评论 0 0
  • “世界上没有丑女人,只有懒女人……”不知是哪一位伟大的哲学家说出这么一句流传千古的至理名言。看看二十一世纪的...
    肖先生肖军阅读 800评论 2 0
  • 伴随着北方进入春天的季节,对于她来说也是一个鼓足勇气的季节。学校开了学,梧桐绿了叶,就连曾经失联多年的同桌也突然发...
    古小枫阅读 364评论 0 3