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

    文章

    4601

    浏览量

    92671
  • 蒙特卡洛
    +关注

    关注

    0

    文章

    13

    浏览量

    8154

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

    机器学习中的交叉验证方法

    常见的交叉验证方法,包括HoldOut交叉验证、K-Fold交叉验证、分层K-Fold交叉验证、Leave P Out交叉验证、留一交叉验证、蒙特卡洛(Shuffle-Split)交叉验证以及时间序列(滚动交叉验证)。
    的头像 发表于 07-10 16:08 935次阅读

    【SOC的多种计算方法

    SOC的多种计算方法
    的头像 发表于 06-05 09:34 1931次阅读
    【SOC的多种<b class='flag-5'>计算方法</b>】

    储能容量的计算方法

    随着可再生能源的大规模应用和电力系统的日益复杂,储能技术的重要性日益凸显。储能容量作为储能技术的关键参数之一,其计算方法对于评估储能系统的性能、优化储能系统的配置以及提高电力系统的稳定性等方面具有重要意义。本文将对储能容量的
    的头像 发表于 05-20 15:20 4388次阅读

    电压探头延迟计算方法及应用

    在电子测试和测量中,电压探头是一种常用的工具,用于测量电路中的电压信号。然而,电压探头本身会引入一定的延迟,这可能会对测量结果产生影响。本文将介绍电压探头延迟的计算方法,并探讨其在实际应用中的重要
    的头像 发表于 04-28 10:28 514次阅读
    电压探头延迟<b class='flag-5'>计算方法</b>及应用

    电线安全载流量的计算方法

    电线的安全载流量是指电线能够安全地承受的最大电流。计算电线的安全载流量需要考虑电线的材质、截面积、长度、散热条件等因素。下面将详细介绍电线安全载流量的计算方法。 电线的材质是影响安全载流量的重要
    的头像 发表于 01-16 10:51 2338次阅读

    耐压测试中漏电流的计算方法

    耐压测试是一种常用的电气测试方法。在进行耐压测试时,需要对漏电流进行计算,以确保测试过程中的安全。本文将详细介绍耐压测试中漏电流的计算方法。 一、漏电流的概念 漏电流是指在绝缘材料表面或内部
    的头像 发表于 01-11 14:38 1.1w次阅读
    耐压测试中漏电流的<b class='flag-5'>计算方法</b>

    IGBT工作时序及门极驱动计算方法

    本篇文章简单介绍IGBT工作时序及门极驱动计算方法,引入大电流驱动IC以及门极保护TVS,同时罗列了不同品牌碳化硅MOSFET所耐受驱动电压,借此介绍非对称TVS新产品的实用性,欢迎感兴趣人士交流、沟通。
    的头像 发表于 12-21 13:48 3026次阅读
    IGBT工作时序及门极驱动<b class='flag-5'>计算方法</b>

    STM32定时器时间计算方法

    STM32微控制器的定时器模块在嵌入式系统中非常常见,它被用于产生精确的时间延迟,或者用于实时时钟(RTC)等功能。为了充分利用STM32的定时器功能,理解其时间计算方式是非常重要的。下面,我们将
    的头像 发表于 12-19 11:31 1.1w次阅读

    AI发展下服务器的选择非常重要

    在AI发展下,服务器的选择非常重要。以下是一些选择服务器时需要考虑的因素。
    的头像 发表于 12-07 10:06 484次阅读

    EMC计算方法和EMC仿真(1) ——计算方法简介

    EMC计算方法和EMC仿真(1) ——计算方法简介
    的头像 发表于 12-05 14:56 1355次阅读
    EMC<b class='flag-5'>计算方法</b>和EMC仿真(1) ——<b class='flag-5'>计算方法</b>简介

    不同壳温下SOA曲线的计算方法

    不同壳温下SOA曲线的计算方法
    的头像 发表于 12-04 17:54 722次阅读
    不同壳温下SOA曲线的<b class='flag-5'>计算方法</b>