0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

非常重要和有趣的计算方法——蒙特卡洛方法

中科院半导体所 ? 来源:中科院近代物理所 ? 2023-01-04 09:31 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文将向大家介绍一种在科学研究中非常重要和有趣的计算方法——蒙特卡洛方法,这种方法在数学、物理学、化学、工程、经济学、环境动力学等多个领域都有广泛的应用。

到底什么是蒙特卡洛方法?我们可以先从它的名字开始了解,蒙特卡洛(Monte Carlo)是摩纳哥公国的一座城市,是世界著名的“赌城”。以“蒙特卡洛”来命名这种计算方法就是因为其本身便是一种概率算法,其核心思路是通过概率实验所求的概率来计算我们感兴趣的一个量。

概率算法的1.0版

为了更好地理解蒙特卡洛方法,我们先简单了解一下“蒲丰投针问题”,这个问题的提出被认为是蒙特卡洛方法的起源。 18世纪,法国数学家蒲丰提出了一种计算圆周率π的方法——随机投针法:假设我们有一个以平行且等距为a的木纹铺成的地板,随意抛一支长度为l(比木纹之间距离小)的针,通过针和其中一条木纹相交的概率p,即可计算圆周率π。计算公式为:

7781c09c-8ba2-11ed-bfe3-dac502259ad0.png

,其中n是投针的总次数,m是针与平行直线交点的总数目。

778f98ca-8ba2-11ed-bfe3-dac502259ad0.png

图 蒲丰投针问题示意图

这个方法的原理可以通过概率学的推导计算来进行证明。由于投针掉落的位置与方向都是随机且独立的。我们假定落地后针的中心距最近的地板条纹的距离为X,那么X在[0,a/2]上均匀分布;针与地板条纹的夹角为Y,则Y在[0, π/2]之间均匀分布。当

77a00822-8ba2-11ed-bfe3-dac502259ad0.png

时,针与木纹相交,因此(X,Y)的概率密度函数和相交的概率P分别为:

77ac5906-8ba2-11ed-bfe3-dac502259ad0.png

77b87182-8ba2-11ed-bfe3-dac502259ad0.png

相信大家都听懂了,下面我们可以…… 好吧,这里还有一种虽然不够严谨、但易于理解的解释: 我们想象一个长度为πa的铁丝,被绕成了一个直径为a的圆环。那么无论我们怎么扔这个铁环,它与条纹的交点恒为两个,因此当投针n次后,相交的次数恒为2n。如果我们把铁丝拉直再扔,这样的铁丝扔下时与平行线相交的情形要比圆圈复杂些,可能有4个交点、3个交点、2个交点、1个交点,甚至于都不相交。由于圆圈和直杆的长度同为πa,根据机会均等的原理,投掷n次,直杆与平行线组交点的总数期望也是2n。同时还有一个规律,当投针次数n固定时,铁丝的长度l与交点总数m应为正比关系,即m=kl。考虑到l=πa时,m=2n,将

77d5f8e2-8ba2-11ed-bfe3-dac502259ad0.png

代入前式可得:

77e35e4c-8ba2-11ed-bfe3-dac502259ad0.png

。 投针试验既然是依靠概率的算法,那么随着投针次数越来越多,计算求得的π值也会越来越接近于真实值。下表给出了一些比较出名的投针试验得到的圆周率估计值,可以看到在投掷数千次后,计算得到的圆周率与我们所熟知的π值的误差仍较大。

77ef7dbc-8ba2-11ed-bfe3-dac502259ad0.png

表 一些投针试验的计算结果

1995年,马修斯发表了他如何通过观察天空中亮星的分布计算圆周率。他的试验方法基于一个基本的原理:任意两个自然数互质的概率为77fce0e2-8ba2-11ed-bfe3-dac502259ad0.png。他从众多星星中选择100个亮星,将这些亮星两个分成一对,然后计算每对星之间的角距,得出一堆数据,然后检查这些数据的因子情况,从中计算出π值约为3.12772。

从上述两个例子来看,依靠重复的物理、观测等试验行为来获取随机性数据的方法往往很难得到令人满意的计算结果,这主要是受到了样本数量的限制。而早在魏晋时,我国的刘徽便通过割圆术求得了π的近似值3.1416。

77772df8-8ba2-11ed-bfe3-dac502259ad0.svg

“史诗级加强”X.0版

20世纪40年代,美国“曼哈顿计划”的成员S.M.乌拉姆和J·冯·诺伊曼第一次把这种通过概率事件来计算关注的确定值的方法命名为“蒙特卡洛方法”。随着电子计算机的发明和科学技术的发展,蒙特卡洛方法得到了“史诗级加强”。

78172fb0-8ba2-11ed-bfe3-dac502259ad0.png

图 S.M.乌拉姆(左)和J·冯·诺伊曼(右)

计算机在进行蒙特卡洛模拟的过程中获取随机性最根本的方法是通过固定算法得到符合[0,1]均匀分布的“伪随机数”,它并不真正的随机,但具有类似于随机数的统计特征,如均匀性、独立性等。

这里介绍另一种计算π值的蒙特卡洛方法——“撒豆法”。该方法假定有无数个豆子被均匀地撒在下图所示的正方形中,那么落在圆内的豆子数m与落在正方形内的豆子总数n的比值的期望应与它们面积的比值一致,即78255194-8ba2-11ed-bfe3-dac502259ad0.png,这样就可以计算得到π的值。

78312000-8ba2-11ed-bfe3-dac502259ad0.png

图 “撒豆法”求解π值模型示意图

利用计算机开展上述计算,仅需不到一分钟的时间,便可以完成十亿次“撒豆”,并得到相应的计算结果。计算的python代码及运行结果见下图。

783e9e38-8ba2-11ed-bfe3-dac502259ad0.png

图 计算所用python代码及计算结果

计算机时代的蒙特卡洛模拟无疑具有超高的计算效率,且其计算效率随着计算机技术的飞速发展而不断提升。

77772df8-8ba2-11ed-bfe3-dac502259ad0.svg

核科学领域中的应用

蒙特卡洛方法在核科学领域中有着广泛的应用。核物理领域的基本参数(如反应截面、散射发射角度分布、能谱分布、衰变、衰减等)主要来自核物理实验及理论模型等,而蒙特卡洛模拟程序也在与核物理实验、理论模型等的相互参照、验证和迭代更新中不断发展至今。

如今在核物理领域有许多广泛使用的蒙特卡洛程序,如FLUKA、MCNP、PHITS、GEANT4等,这些蒙特卡洛程序对核物理学的发展至关重要,同时它们的运用过程也非常的有趣和巧妙。

具体以加速器辐射防护领域为例,粒子加速器产生的高速运动的微观粒子(一般每秒可达上亿个粒子)在与其他物质碰撞时,会通过核反应产生带电粒子、中子、γ射线等次级辐射,这些次级辐射又会继续与材料发生核反应,产生更多的次级辐射。如此周而复始,其反应过程非常复杂,无法通过人力模拟计算。而蒙特卡洛方法,正好能够解决这个难题。

7857e0f0-8ba2-11ed-bfe3-dac502259ad0.png

图 加速器产生电离辐射示意图

为了使加速器产生的强电离辐射降低到可接受的低水平,科研人员需要对次级粒子的输运过程进行仿真模拟,并根据模拟结果进行屏蔽阻挡设计。

接下来我们以一个简单模型为例,介绍蒙特卡洛方法应用于粒子输运模拟的基本思路。如下图所示,假定在一个二维的矩形屏蔽中,充满了物质B,左、上、下侧设置黑色隔板,右侧设置红色隔板。

786587fa-8ba2-11ed-bfe3-dac502259ad0.png

图 模型示意图

假设粒子A具有以下特质:

粒子A在物质B中直线运动。但每直线前进1m,就会停止前进并与B发生反应,反应后继续直线前进。反应有三种可能:

①:A忽略与B的反应,继续按原方向前进1m,发生概率为1/3;

②:A与B发生正碰撞,向左偏转45°前进1m,发生概率为1/3;

③:A与B发生反碰撞,向右偏转45°前进1m,发生概率为1/3。

2. 当A碰到黑色隔板后,会立刻消失;

3. 当A碰到红色隔板后,会进入环境。 如果我们想知道当大量粒子A从上图中P位置向右水平射出,会有多少个粒子通过红色隔板进入环境,就可以利用蒙特卡洛程序进行大量模拟。 对单个事例,当粒子A从P点出发前进1米后,抽取伪随机数N为[0,1]的均匀分布,根据抽取的数字决定其下一步的运动轨迹:当0

下图给出了粒子A可能的两种运行轨迹,利用计算机程序可以高效地完成大量的粒子模拟,得到计算结果。根据统计学特性,计算的事例越多,结果也就越接近期望值。

78726c7c-8ba2-11ed-bfe3-dac502259ad0.png

图 粒子A可能的两种运行轨迹

在理解了上述示例的计算思路后,不难想象在辐射防护领域的研究中,只要我们知道了粒子在运行过程中每一步可能发生的反应类型及其概率等基本的核物理参数,就可以通过计算机程序实现各种不同情形的模拟计算。

比如FLUKA程序可被用于计算国内医用重离子加速器HIMM治疗室的辐射剂量率分布。如下图所示,可以看出碳离子集中损失的位置辐射剂量率最高,约为106μSv/h;而经过混凝土屏蔽后,屏蔽外的辐射剂量率衰减到了2.5μSv/h以下。

787e9ace-8ba2-11ed-bfe3-dac502259ad0.png

图 HIMM治疗室剂量率分布图。HIMM装置每秒钟能够产生1亿个最高能量为400MeV/u的碳离子束用于治疗,束流照射人体时几乎全部损失,从而产生各种次级辐射。

利用FLUKA程序,还可以开展更为复杂的辐射防护模拟研究,如更加多样的束流损失模式、更多的粒子种类与能量、更加复杂的建筑结构等。

788c7c52-8ba2-11ed-bfe3-dac502259ad0.png

图 各类加速器辐射剂量分布图示例

读到这里,相信大家对蒙特卡洛方法已经有了一个基本的了解。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4720

    浏览量

    95943
  • 蒙特卡洛
    +关注

    关注

    0

    文章

    14

    浏览量

    8323

原文标题:有趣的“赌博算法”——蒙特卡洛方法

文章出处:【微信号:bdtdsj,微信公众号:中科院半导体所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    常见传动机构负载惯量计算方法及实例

    传动机构是机械设备中的关键组件,它通过传递动力来实现机械运动。在设计传动机构时,负载惯量的计算至关重要,这直接影响到传动机构的稳定性和可靠性。以下是常见传动机构负载惯量的计算方法及实例: 一、常见
    的头像 发表于 04-23 17:38 ?1398次阅读
    常见传动机构负载惯量<b class='flag-5'>计算方法</b>及实例

    Broadcom使用Cadence Spectre FMC Analysis进行时序变化分析

    对于最新的微型半导体制作工艺而言,制程工艺变化和器件不匹配带来了深远影响。复杂制程工艺也会影响器件生产的可变性,进而影响整体良品率。 蒙特卡洛(MC)仿真使用重复的随机抽样方法,将工艺变化与电路性能
    的头像 发表于 04-19 14:57 ?1541次阅读
    Broadcom使用Cadence Spectre FMC Analysis进行时序变化分析

    电解电容纹波电流测试方法

    电解电容用焊线引出(焊线尽可能的短),然后用电流钳卡在电解电容一个引脚,此时测试的是单个电容的纹波电流值。3.2纹波电流有效值计算方法3.3纹波电流合成计算公式纹波电流通常是由基本频率和高频电流构成。因此,在计算时要通过合成公式
    发表于 03-12 14:16

    振弦式锚杆应力计的工作原理与数据计算方法

    准确、稳定性好、长期监测可靠等优点。南京峟思将详细介绍振弦式锚杆应力计的工作原理及其数据计算方法。一、工作原理振弦式锚杆应力计的工作原理基于振弦的频率与所受张力之
    的头像 发表于 02-24 13:49 ?528次阅读
    振弦式锚杆应力计的工作原理与数据<b class='flag-5'>计算方法</b>

    揭秘SMT贴片加工价格计算:全方位解析成本构成

    ,了解其价格计算方法至关重要,因为这不仅影响生产成本,还影响产品的最终售价。本文将介绍SMT贴片加工厂的价格计算方法,以帮助客户更好地理解费用构成和合理预算。 ? SMT贴片加工厂价格计算方法
    的头像 发表于 02-13 09:16 ?707次阅读

    蒙特卡洛仿真揭秘水下光信号传输奥秘

    近年来,人类海洋活动日益扩大,水下无线传感器网络、光/声学成像探测技术和水下航行器等技术快速发展,迫切需要高数据传输速率的水下无线通信技术的支持,以实现观测数据的传输及控制指令的交换。相对于传统的水声通信而言,水下光通信的频带宽,通信容量大,适于水下大容量数据的传输,以及不易受海水温度和盐度变化的影响;具有良好的抗干扰能力。此外,激光具有较强的方向性,提高了
    的头像 发表于 01-16 17:47 ?872次阅读
    <b class='flag-5'>蒙特卡洛</b>仿真揭秘水下光信号传输奥秘

    电阻器的工作原理与计算方法

    散发出去,从而限制电流的大小。这一过程遵循欧姆定律,即电流I、电压V和电阻R之间的关系为:I = V/R。 电阻器的计算方法 电阻器的计算方法有多种,根据具体需求和已知条件的不同,可以选择合适的公式进行计算。以下是一些常见的
    的头像 发表于 12-04 14:31 ?2410次阅读

    mmc的使用方法 mmc和sd的区别

    MMC的使用方法 MMC(MultiMediaCard)是一种广泛使用的小型存储,主要用于手机、数码相机等便携式设备。以下是MMC
    的头像 发表于 11-25 09:51 ?2872次阅读

    波特率的定义和计算方法 波特率与数据传输速度的关系

    。符号可以是数字、字母、声音、图像等,根据不同的符号来确定每个符号占据多长时间。 波特率的计算方法 波特率的计算方法通常有两种: 基于传输速率和符号位数 : 波特率计算公式为:Baud rate = 传输速率 / log?(符号
    的头像 发表于 11-22 09:49 ?9835次阅读

    FPGA门数的计算方法

    我们在比较FPGA的芯片参数时经常说某一款FPGA是多少万门的,也有的说其有多少个LE,那么二者之间有何关系呢? FPGA等效门数的计算方法有两种,一是把FPGA基本单元(如LUT+FF
    的头像 发表于 11-11 09:45 ?1247次阅读
    FPGA门数的<b class='flag-5'>计算方法</b>

    为什么高UVLO对于IGBT和SiC MOSFET电源开关的安全工作非常重要

    电子发烧友网站提供《为什么高UVLO对于IGBT和SiC MOSFET电源开关的安全工作非常重要.pdf》资料免费下载
    发表于 10-14 10:11 ?1次下载
    为什么高UVLO对于IGBT和SiC MOSFET电源开关的安全工作<b class='flag-5'>非常重要</b>

    电流计算方法与配线法的区别

    电流计算方法与配线法是两个不同的概念,它们在电气工程和电子设计中扮演着重要的角色。电流计算方法主要涉及到电流的计算和分析,而配线法则是关于如何安全、有效地将电气设备连接在一起的实践。
    的头像 发表于 09-19 16:00 ?1138次阅读

    电荷放大电路的带宽 和IV转换电路带宽计算方法不一样吗?

    ,带宽会非常小,但实际中,电荷放大电路对输入的陡峭脉冲还是可以完美响应,这与带宽非常小矛盾。 电荷放大电路的带宽 和IV转换电路带宽计算方法不一样吗?
    发表于 09-03 07:07

    使用位置传感器输出数据的角度计算方法

    电子发烧友网站提供《使用位置传感器输出数据的角度计算方法.pdf》资料免费下载
    发表于 08-30 10:37 ?0次下载
    使用位置传感器输出数据的角度<b class='flag-5'>计算方法</b>

    电阻降压的原理、计算方法以及实际应用

    在直流电路中,使用电阻进行降压是一种简单而常见的方法。这种方法基于欧姆定律,即电流(I)、电压(V)和电阻(R)之间的关系为 V = I R。当电流通过电阻时,电阻会消耗电能,从而产生电压降。 一
    的头像 发表于 08-20 10:55 ?1.6w次阅读