原标题:蒙特·卡罗方法中的数学之美,你一定不想错过

有方教育——我们致力于为中学生提供学界和业界前沿的学术科研教育内容,帮助学生参加海外科研项目,在提升申请竞争力的同时,获得领跑优势。

一、概述

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

它诞生于上个世纪40年代美国的”曼哈顿计划”,名字来源于赌城蒙特卡罗,象征概率。

当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。、

蒙特卡罗方法的解题过程可以归结为三个主要步骤:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。

蒙特卡罗方法解题过程的三个主要步骤:

(1)构造或描述概率过程

对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过 程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。

(2)实现从已知概率分布抽样

构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。

(3)建立各种估计量

一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。

数学应用:

通常蒙特·卡罗方法通过构造符合一定规则的随机数来解决数学上的各种问题。对于那些由于计算过于复杂而难以得到解析解或者根本没有解析解的问题,蒙特·卡罗方法是一种有效的求出数值解的方法。一般蒙特·卡罗方法在数学中最常见的应用就是蒙特·卡罗积分。

从理论上来说,蒙特卡罗方法需要大量的实验。实验次数越多,所得到的结果才越精确。

计算机技术的发展,使得蒙特卡罗方法在最近10年得到快速的普及。现代的蒙特卡罗方法,已经不必亲自动手做实验,而是借助计算机的高速运转能力,使得原本费时费力的实验过程,变成了快速和轻而易举的事情。它不但用于解决许多复杂的科学方面的问题,也被项目管理人员经常使用。

借助计算机技术,蒙特卡罗方法实现了两大优点:

一是简单,省却了繁复的数学推导和演算过程,使得一般人也能够理解和掌握

二是快速。简单和快速,是蒙特卡罗方法在现代项目管理中获得应用的技术基础。

蒙特卡罗方法有很强的适应性,问题的几何形状的复杂性对它的影响不大。该方法的收敛性是指概率意义下的收敛,因此问题维数的增加不会影响它的收敛速度,而且存贮单元也很省,这些是用该方法处理大型复杂问题时的优势。因此,随着电子计算机的发展和科学技术问题的日趋复杂,蒙特卡罗方法的应用也越来越广泛。它不仅较好地解决了多重积分计算、微分方程求解、积分方程求解、特征值计算和非线性方程组求解等高难度和复杂的数学计算问题,而且在统计物理、核物理、真空技术、系统科学 、信息科学、公用事业、地质、医学,可靠性及计算机科学等广泛的领域都得到成功的应用。

接下来列举几个蒙特·卡罗方法的应用实例。

二、π的计算

第一个例子是,如何用蒙特卡罗方法计算圆周率π。

正方形内部有一个相切的圆,它们的面积之比是π/4。

现在,在这个正方形内部,随机产生10000个点(即10000个坐标对 (x, y)),计算它们与中心点的距离,从而判断是否落在圆的内部。

如果这些点均匀分布,那么圆内的点应该占到所有点的 π/4,因此将这个比值乘以4,就是π的值。通过R语言脚本随机模拟30000个点,π的估算值与真实值相差0.07%。

一直到公元20世纪初期,尽管实验次数数以千计,利用蒙特卡罗方法所得到的圆周率π值,还是达不到公元5世纪祖冲之的推算精度。这可能是传统蒙特卡罗方法长期得不到推广的主要原因。

三、积分的计算

上面的方法加以推广,就可以计算任意一个积分的值。

比如,计算函数 y = x2 在 [0, 1] 区间的积分,就是求出下图红色部分的面积。

这个函数在 (1,1) 点的取值为1,所以整个红色区域在一个面积为1的正方形里面。在该正方形内部,产生大量随机点,可以计算出有多少点落在红色区域(判断条件 y < x2)。这个比重就是所要求的积分值。

用Matlab模拟100万个随机点,结果为0.3328。

四、交通堵塞

蒙特卡罗方法不仅可以用于计算,还可以用于模拟系统内部的随机运动。下面的例子模拟单车道的交通堵塞。

根据 Nagel-Schreckenberg 模型,车辆的运动满足以下规则。

当前速度是 v 。

如果前面没车,它在下一秒的速度会提高到 v + 1 ,直到达到规定的最高限速。

如果前面有车,距离为d,且 d < v,那么它在下一秒的速度会降低到 d – 1 。

此外,司机还会以概率 p 随机减速, 将下一秒的速度降低到 v – 1 。

在一条直线上,随机产生100个点,代表道路上的100辆车,另取概率 p 为 0.3 。

上图中,横轴代表距离(从左到右),纵轴代表时间(从上到下),因此每一行就表示下一秒的道路情况。

可以看到,该模型会随机产生交通拥堵(图形上黑色聚集的部分)。这就证明了,单车道即使没有任何原因,也会产生交通堵塞。

五、产品厚度

某产品由八个零件堆叠组成。也就是说,这八个零件的厚度总和,等于该产品的厚度。

已知该产品的厚度,必须控制在27mm以内,但是每个零件有一定的概率,厚度会超出误差。请问有多大的概率,产品的厚度会超出27mm?

取100000个随机样本,每个样本有8个值,对应8个零件各自的厚度。计算发现,产品的合格率为99.9979%,即百万分之21的概率,厚度会超出27mm。

六、证券市场

证券市场有时交易活跃,有时交易冷清。下面是你对市场的预测。

如果交易冷清,你会以平均价11元,卖出5万股。

如果交易活跃,你会以平均价8元,卖出10万股。

如果交易温和,你会以平均价10元,卖出7.5万股。

已知你的成本在每股5.5元到7.5元之间,平均是6.5元。请问接下来的交易,你的净利润会是多少?

取1000个随机样本,每个样本有两个数值:一个是证券的成本(5.5元到7.5元之间的均匀分布),另一个是当前市场状态(冷清、活跃、温和,各有三分之一可能)。

模拟计算得到,平均净利润为92, 427美元。

资料来源:妙思数学、百度百科

有方教育——我们的导师来自耶鲁大学、麻省理工学院、斯坦福大学等世界顶尖名校,致力为让中学生提供来自学界业界前沿的学术科研教育内容,旨在让学生在亲身实践的过程中深入浅出地理解前沿科技。

项目主题——我们聚集顶尖学府导师资源,补足中美教育差距,力求为中国学生搭建连接世界科技的平台。我们引领学生在世界前沿课题研究中参与科研教育,全面提升学生的自主思考、观察分析、逻辑思维能力。我们为学生提供参加海外科研项目,帮助学生斩获国际知名学术惊呆大奖、发表英语叙述论文,让学生在提升申请竞争力的同事,获得领跑优势

责任编辑:

蒙特 卡罗方法matlab,蒙特·卡罗方法中的数学之美,你一定不想错过相关推荐

  1. matlab多重积分如何使用方法,MATLAB在《高等数学》中的应用_多重积分

    论文导读::MATLAB是矩阵实验室的简称,在图形处理方面表现突出.<高等数学>是大学教育中重要的基础理论课之一,图形在<高等数学>的学习中占有重要的位置.在<高等数学& ...

  2. 直接法 matlab,解线性方程组直接方法matlab用法.doc

    解线性方程组直接方法matlab用法 在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法. 2.1 方程组的逆矩阵解法及其MATLAB程序 2.1.3 线性方程组有解的判定 ...

  3. 2021-04-09 随机模拟—蒙特卡洛方法 Matlab代码实现

    随机模拟-蒙特卡洛方法 Matlab代码实现 蒙特卡洛方法 蒙特卡洛方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出 ...

  4. 蒙特卡洛方法 matlab 实现

    蒙特卡洛方法 matlab 实现 已有 12594 次阅读 2010-10-22 14:12 |个人分类:MATLAB|系统分类:科研笔记|关键词:蒙特卡洛方法 matlab 蒙特卡罗(Monte C ...

  5. Matlab之GPU加速方法

    Matlab之GPU加速方法 Matlab之GPU加速方法 一般代码加速方法 GPU设备确认 GPU和CPU之间数据传递 复杂代码加速方法 一般代码加速方法 Matlab目前只支持Nvidia的显卡. ...

  6. 蒙氏计算机教育目的,蒙氏数学领域基础理论及教育目的

    原标题:蒙氏数学领域基础理论及教育目的 " 蒙氏数学博大精深又浅显易懂,是蒙氏教育的精华,毫不夸张地说,蒙氏数学是幼儿数学教育一颗璀璨的明珠,是蒙特梭利博士对人类教育事业的伟大贡献,而她本身 ...

  7. 【 MATLAB 】DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(频域方法)

    上篇博文:[ MATLAB ]DFT的性质讨论(二)序列的循环移位及其 MATLAB 实现(时域方法) 提到了对序列x(n)做循环移位后的DFT形式为: 上篇博文已经讨论过了第一种实现循环移位的方法, ...

  8. matlab中fminunc函数使用方法,[分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB)...

    [分享]无约束非线性规划函数\fminunc函数使用方法(MATLAB) 无约束非线性规划函数\fminunc函数使用方法(MATLAB) %用于求解无约束非线性规划的函数有:fminsearch和f ...

  9. 求多项式解(三种方法MATLAB)

    function ex()N = 1000000;a = 1:N;x = 1;ticp1 =sum(a.*x.^[N-1:-1:0]);p1, toc % 直接计算 方法一tic, p2 = a(1) ...

最新文章

  1. 04:sqlalchemy操作数据库 不错
  2. Xshell发送命令到全部会话
  3. python要在哪里写代码-初识python【今天开始写代码】第一课
  4. 【数据展示】matplotlib设置画面大小
  5. where is os type and version determined for a ui5 html
  6. 数据结构与算法——图解平衡二叉树及代码实现
  7. SharePoint 2013 同步FBA认证用户
  8. MATLAB_R2020b安装
  9. IE中使用Google Chrome Frame运行HTML 5
  10. 老实人spring源码解析目录
  11. 什么叫做石英表_什么是石英表?石英表与机械表的区别
  12. wpa_supplicant配置
  13. android 视频录制锐化,从录制到剪辑,用的同款APP,为什么你录制的游戏视频画面会远不如别人?...
  14. Stata:投资效率
  15. 银行卡号- 查询银行卡信息
  16. 微信公众号入门详细教程
  17. 计算机组成与设计:计算机概要与技术
  18. 计算机运维方向要考什么证,IT运维项目经理考的证
  19. VerilogHDL二分频代码
  20. 【Python小案例】打工人必备:有了这款倒计时神器,再也不用担心自己的隐私被偷窥啦~(附源码)

热门文章

  1. 中科大 计算机网络7 分组延迟 分组丢失 吞吐量
  2. Android NDK之静态/动态注册Native方法
  3. 优秀程序员必备的15大技能
  4. 互联网产品用户体验设计的三大定律
  5. TeamViewer13 -- 安装、使用说明
  6. 由Docker的MySQL官方镜像配置的容器无法启动问题解决办法(修改配置后无法启动)
  7. Python 删除满足条件的某些行
  8. C#指南,重温基础,展望远方!(4)表达式
  9. 设计模式学习笔记五——Prototype模式
  10. 操作系统常考知识点总结(1)