遗忘海岸

江湖程序员 -Feiph(LM战士)

导航

放射性元素原子的平均寿命

放射性元素原子的寿命是 1/k

数值计算代码:

            double percent = 1.0 / 10000.0; //衰变掉现有的万分之1;
            double original = 1.0;    //总数,按百分比来计算
            double remain = original;   //剩余数目

            //少掉万分之1的时间是 period=ln(9999/10000)/-k 计算时k不加入,
            //少掉万分之一所以剩余  9999/10000 * y0=y0 * exp(-k*t);
            double period = -Math.Log(1 - percent); 
            int step = 1;//经历的衰变周期数(指衰变掉现有的万分之1)

            double avgLifetime = 0.0d;
            double hasDealSum = 0.0d; //已经累加进来的百分比数,这个应该等于1
            while ((original-hasDealSum)>=0.0000001) //
            {
                var decay= (remain * percent); //本次衰变掉的数量
                var lifetime = step * period * decay; // 本次衰变掉的原子寿命*权重
                hasDealSum += decay;
                remain = remain * (1 - percent);
                avgLifetime = avgLifetime + lifetime;
                step++;
               // Console.WriteLine(cur);
            }

            Console.WriteLine(String.Format("original={0},has deal sum={1}", original, hasDealSum));
            Console.WriteLine("average lifetime:" + avgLifetime + " / k"); //
View Code

一开始选择半衰期结果是1.38/k误差比较大

 

参考文章:

http://wenku.baidu.com/link?url=jlz2UmbzXWoI76MqWzBcw323UpvLs2HgOpM5UWlDKHXErCoNm-pixpy8vtUrQC8Hajm4FpiZkLRpsZx-fQq6InuEztZMwS9-4I8XazXgjEq

posted on 2016-09-12 16:07  遗忘海岸  阅读(2022)  评论(0编辑  收藏  举报