您的位置:首页 > 其它

[算法设计与分析]3.4.5特征根求解递推方程(粒子分裂)

2018-03-25 14:30 218 查看
反应堆有α和β两种粒子 每秒α分裂为3个β,β分裂为1个α和2个β t=0时刻只有一个α,求t时刻两种粒子个数
#include<stdio.h>
#include<iostream>
#include<math.h>

using namespace std;

void ParticleSplitting1(int t);
void ParticleSplitting2(int t);

int main ()
{
int t = 3;
ParticleSplitting1(t);
ParticleSplitting2(t);
}

void ParticleSplitting1(int t)
{
int a[100], b[100];//代表α和β粒子

a[0] = 1;
b[0] = 0;
for(int i = 1; i <= t; i++)
{
a[i] = b[i - 1];//因此a[1]=0因为1s之后α粒子变成了3个β粒子 此时原α粒子消失
b[i] = 3 * a[i - 1] + 2 * b[i - 1];//当前时刻的β粒子是由前一时刻的α粒子和β粒子分裂而来的
}
cout << t << "s之后" << "α粒子的个数是:" << a[t] << "\n\tβ粒子的数目是:" << b[t];
}
//数学模型见书P116
void ParticleSplitting2(int t)
{//等同于exp(n)等同于e^n
int a = int(exp(t * log(3)));//log(x) 的作用就是ln(x)
int b = int(exp((t + 1) * log(3)));

if(t % 2)
{
a -= 3;
b += 3;
}
else
{
a += 3;
b -= 3;
}
a /= 4;
b /= 4;
cout << endl << t << "s之后" << "α粒子的个数是:" << a << "\n\tβ粒子的数目是:" << b;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  特征根 粒子分裂
相关文章推荐