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

  • 一.问题的提出
  • 二.问题的分析
  • 三.问题的求解

一.问题的提出

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

二.问题的分析

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

​ Step1:Step1:Step1:随机产生θi∼U(0,π)i=1,2..7,\theta_i \sim U(0,\pi) \quad i = 1,2..7,θi​∼U(0,π)i=1,2..7,令初值Count=0。Count = 0。Count=0。

​ Step2:Step2:Step2:求S=∑ijcos(θi)j=j+1S = \sum_{i }^j cos(\theta_i)\quad j = j+1S=∑ij​cos(θi​)j=j+1.

​ Step3:Step3:Step3:判断如果S≥5S \geq 5S≥5或者S≤0S \leq 0S≤0。

​ Step4:Step4:Step4:如果S≥5,Count=Count+1S \geq 5,Count = Count+1S≥5,Count=Count+1。否则转向Step1Step1Step1,直到到达总的实验次数。

三.问题的求解

​ 求解用matlabmatlabmatlab求解,易如反掌。

N = 1e6;%设置总实验次数
countSuccess = 0;
countLeft = 0;
countLose = 0;
for i = 1:NTheta = unifrnd(0,pi,[1,7]);k = 1;S = 0;while k<=7S = S + cos(Theta(k));if S >= 5countSuccess  = countSuccess+1;break;elseif S<=0countLeft = countLeft + 1;break;endk = k + 1;endif 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%。

中子穿墙问题的MonteCarlo求解方法相关推荐

  1. 汽油与消费需求问题的MonteCarlo求解方法

    汽油与消费需求问题的MonteCarlo求解方法 一.问题的提出 二.问题的分析 三.代码的实现 一.问题的提出 ​ 你受雇于一家加油站连锁店当顾问,你现在的任务是要确定每隔多长时间把多少汽油运送到各 ...

  2. 通俗易懂的MonteCarlo积分方法(五)

    通俗易懂的MonteCarlo积分方法(五) ​ 这次主要目的是想办法提高MonteCarloMonteCarloMonteCarlo的计算精度. ​ 如果我们要求解一个定积分: J=∫abf(x)d ...

  3. 《C语言程序设计:问题与求解方法》——3.8节不同类型数据之间的类型转换

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.8节不同类型数据之间的类型转换,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号 ...

  4. 《C语言程序设计:问题与求解方法》——3.9节常见编程错误

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.9节常见编程错误,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 3.9 ...

  5. 《C语言程序设计:问题与求解方法》——1.4节本章习题

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第1章,第1.4节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 一 ...

  6. 《C语言程序设计:问题与求解方法》——0.5节本章习题

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第0章,第0.5节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 1 ...

  7. 二阶传递函数的推导及几种求解方法的比较

    二阶系统是指那些可用二阶微分方程描述的系统,其电路形式是由两个独立动态元器件组成的电路. 二阶系统电路包括二阶低通电路.二阶高通电路.二阶带通电路和二阶带阻电路. 下面分别给出以上二阶系统传递函数的推 ...

  8. 线性代数---向量问题的求解方法

    线性代数-向量问题的求解方法 如果存在什么问题,欢迎批评指正!谢谢!

  9. 重磅!一文读懂线性方程组的求解方法

    目录 1.AAA为方阵 直接法 迭代法 2.AAA为非方阵且A∈Rm×n,m>nA\in R^{m\times n},m>nA∈Rm×n,m>n 2.1. r(A)=n<mr( ...

最新文章

  1. 安装QT的时候出现PATH_MAX错误
  2. VIM中空格和TAB的替换 [转]
  3. 6.SQL Server Sql语句
  4. 01.Python基础-3.集合容器
  5. 三星note2+android8.0,放大版Note2 三星Galaxy Note8.0
  6. 前端和后端哪个工资高_嵌入式软硬件工程师哪个更有前途,工资还高
  7. Axure原型制作规范
  8. html5文件域的自动获取,HTML5 文件域+FileReader 读取文件(一)
  9. chrome github上不去 mac_码农大叔打赌,github上快速搜索优质开源项目,这些技能你不懂?...
  10. 获取周一_周一个股精选:光伏概念、央企改革:太阳能(000591)
  11. 从0-1教你大屏制作!实时数据处理+零代码,它的可视化堪比python
  12. 如何在乌版图系统添加拼音输入法!
  13. mysql获取字符串长度函数
  14. J2SE J2EE J2ME名字的来历
  15. 手机号归属地运营商查询-JAVA
  16. 仿微信朋友圈点击评论自动定位到对应位置
  17. 【论文阅读笔记】Deep neural networks are easily fooled- High confidence predictions for unrecognizable image
  18. 今天一个大龄同事被辞退了,顿时让我思绪万千。程序员32岁是一个坎,大龄程序员的出路到底在哪?
  19. app inventor入门详细教程(音乐播放器)01
  20. [hdu4416 Good Article Good sentence]后缀自动机SAM

热门文章

  1. 用于jqGrid获取SQL Server中数据的简单分页存储过程及sp_executesql的一点使用方法...
  2. pytorch: 网络层参数初始化
  3. 20171130C语言知识点梳理
  4. E20170414-ms
  5. Asp.Net MVC学习总结(三)——过滤器你怎么看?
  6. CentOS 安装 rz sz
  7. Key为数字的Json数据标准化成标准Json格式
  8. tomcat-maven-plugin 插件使用
  9. Qt之QFileIconProvider
  10. TCP/IP协议学习(五) 基于C# Socket的C/S模型