中子穿墙问题的MonteCarlo求解方法

中子穿墙问题的MonteCarlo求解方法

一.问题的提出

​ 如下图所示,代表一个中子穿过用于屏蔽中子的铅墙的示意图。铅墙的高度远大于左右的厚度。设中子垂直由左端进入铅墙,铅墙中前行一个单位距离后与一个铅原子碰撞。此时会改变方向,但是此时改变的方向是任意的,并且能继续运行一个单位后与另一个铅原子碰撞。这样下去,如果中子在铅墙里消耗掉所有的能量或者从左端溢出即被视为中子被铅墙挡住。但是,如果中子由右端溢出,那么我们就视作中子溢出。假设穿墙的厚度为5个单位,能量为可以运行7个单位,每运行一个单位后视为中子会发生碰撞,求中子溢出的概率?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWvW2M9A-1608431831434)(D:\文件\2020 09 19\美赛软件\量子图.png)]

二.问题的分析

​ 我们关心的是每一次碰撞后中子在 x x x轴方向前进了多少。所以行进方向是正/负对结果影响不大,我们只考虑正值情况。用计算机抽样 θ i ∼ U ( 0 , π ) i = 1 , 2..7 \theta_i \sim U(0,\pi)\quad i = 1,2..7 θiU(0,π)i=1,2..7,看经过7次碰撞后,有多少能超过墙的右端。

S t e p 1 : Step1: Step1:随机产生 θ i ∼ U ( 0 , π ) i = 1 , 2..7 , \theta_i \sim U(0,\pi) \quad i = 1,2..7, θiU(0,π)i=1,2..7,令初值 C o u n t = 0 。 Count = 0。 Count=0

S t e p 2 : Step2: Step2: S = ∑ i j c o s ( θ i ) j = j + 1 S = \sum_{i }^j cos(\theta_i)\quad j = j+1 S=ijcos(θi)j=j+1.

S t e p 3 : Step3: Step3:判断如果 S ≥ 5 S \geq 5 S5或者 S ≤ 0 S \leq 0 S0

S t e p 4 : Step4: Step4:如果 S ≥ 5 , C o u n t = C o u n t + 1 S \geq 5,Count = Count+1 S5,Count=Count+1。否则转向 S t e p 1 Step1 Step1,直到到达总的实验次数。

三.问题的求解

​ 求解用 m a t l a b matlab matlab求解,易如反掌。

N = 1e6;%设置总实验次数
countSuccess = 0;
countLeft = 0;
countLose = 0;
for i = 1:N
    Theta = unifrnd(0,pi,[1,7]);
    k = 1;
    S = 0;
    while k<=7
        S = S + cos(Theta(k));
        if S >= 5
            countSuccess  = countSuccess+1;
            break;
        elseif S<=0
            countLeft = countLeft + 1;
            break;
        end
        k = k + 1;
    end
    if k == 8 %此时正好能量消耗完
       countLose = countLose + 1;
    end
end
Psuccess = countSuccess/N;
Pleft = countLeft/N;
Plose = countLose/N;
disp(['中子成功从右端溢出的概率:',num2str(Psuccess)]);
disp(['中子成功从左端溢出的概率:',num2str(Pleft)]);
disp(['中子能量耗尽的概率:',num2str(Plose)]);
        

结果为:

中子成功从右端溢出的概率:0.002714
中子成功从左端溢出的概率:0.79054
中子能量耗尽的概率:0.20675

说明中子最后能从此铅墙溢出的概率为 0.27 % 0.27\% 0.27%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值