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

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

b1477cc684f5ea55522777953605ff7e.png

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

945dc7c8237c4c17345316c7170a116f.gif

一、概述

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

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

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

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

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

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

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

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

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

(3)建立各种估计量

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

数学应用:

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

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

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

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

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

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

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

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

二、π的计算

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

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

dadd87aba348afa5759d479acf12b55c.png

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

ed950203fb611405840189c9fcd100f9.png

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

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

三、积分的计算

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

63e42f31af1356914cd58a1bcf30a86d.png

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

2ac2b43a77ef3dc957c078bec4926d04.png

这个函数在 (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 。

da2d438485da679b246a925890bc83ad.png

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

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

五、产品厚度

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

17221e7ee35e313c7df56195c957ad53.png

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

a089c23e1f10a7aa2465abb6a5f411f1.png

取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元之间的均匀分布),另一个是当前市场状态(冷清、活跃、温和,各有三分之一可能)。

e94d23779dbd1008c98d679e83e6e6a7.png

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

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

42a53a3a76f803b5fc16f5336b343a34.png

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

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

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【 CDN 最佳实践】CDN 命中率优化思路

CDN 在静态资源的加速场景中是将静态资源缓存在距离客户端较近的CDN 节点上&#xff0c;然后客户端访问该资源即可通过较短的链路直接从缓存中获取资源&#xff0c;而避免再通过较长的链路回源获取静态资源。因此 CDN的缓存命中率的高低直接影响客户体验&#xff0c;而保证较高…

职场新人的入门法则:少想、多做、立即执行!

对于刚进入职场的新人来说&#xff0c;要想在工作中快速获得成长&#xff0c;唯一办法就是&#xff1a;“少想&#xff0c;多做&#xff0c;立即执行&#xff01;”。 少想不等于盲目&#xff0c;在保证工作思路绝对清晰的同时&#xff0c;执行力越高&#xff0c;执行速度越快…

Python基础-time and datetime

一、在Python中&#xff0c;通常有这几种方式来表示时间&#xff1a; 时间戳格式化的时间字符串元组&#xff08;struct_time&#xff09;共九个元素。由于Python的time模块实现主要调用C库&#xff0c;所以各个平台可能有所不同。1.时间戳&#xff08;timestamp&#xff09;的…

实际应用中带头节点的线性链表

/*带头节点的线性链表类型*/ typedef char ElemType//结点类型 typedef struct LNode {char data;struct LNode *next; }*Link,*Position;//链表类型 typedef struct {Link head,tail;int len; }LinkList;/**/ /*一些在其他函数定义中会调用的函数*/ /**//*---compare---比较两…

matlab中欧姆如何表示,在excel中欧姆符号怎么打

在excel中欧姆符号怎么打&#xff0c;相信对于好多熟练用excel的朋友来说&#xff0c;是很简单不过的&#xff0c;但是对于有些初学者来说&#xff0c;就是菜鸟啦&#xff0c;就有点懵懵懂懂的感觉了&#xff0c;毕竟刚接触的东西还没用过嘛。但是&#xff0c;没关系今天笔者就…

原生js系列之DOM工厂模式

写在前面 如今&#xff0c;在项目中使用React、Vue等框架作为技术栈已成为一种常态&#xff0c;在享受带来便利性的同时&#xff0c;也许我们渐渐地遗忘原生js的写法。 现在&#xff0c;是时候回归本源&#xff0c;响应原始的召唤了。本文将一步一步带领大家封装一套属于自己的…

武术与软件设计 - 简单即是最好

偶然间在公车上看见一个讲中国功夫的特辑&#xff0c;说道香港武打片的发展历程&#xff0c;当然就不得不提起李小龙先生&#xff0c;我们知道他截拳道的威力&#xff0c;这时候我记得在看李小龙传奇时他所说的一些话&#xff0c;当他和美国一个高手比武后他输了&#xff0c;最…

matlab的概述,Matlab概述

MATLAB(矩阵实验室)是数字计算&#xff0c;可视化和编程的第四代高级编程语言和交互式环境。MATLAB是由MathWorks开发的。它允许矩阵操纵&#xff0c;绘制功能和数据; 实现算法; 创建用户界面; 与其他语言编写的程序(包括C语言&#xff0c;C&#xff0c;Java和FORTRAN)进行交互…

形参和实参

形参&#xff1a;全称为“形式参数”是在定义函数名和函数体的时候使用的参数&#xff0c;目的是用来接收调用该函数时传递的参数。形参的作用是实现主调函数与被调函数之间的联系&#xff0c;通常将函数所处理的数据&#xff0c;影响函数功能的因素或者函数处理的结果作为形参…

sizeof和strlen的区别

strlen——get the length of a string.size_t strlen(const char *string);Each ofthese functions returns the number of characters instring, notincluding the terminating null character.//函数返回string里的字符数&#xff0c;不包括终止字符\0sizeofThe sizeof keyw…

位置参数及操作符号

特殊字符对应的处理参数&#xff1a; 参数说明$0当前执行的脚本文件名&#xff0c;若全路径执行&#xff0c;则显示脚本路径$n当前执行脚本的第n个参数值&#xff0c;若n>9&#xff0c;则需写成${10}$#当前传参总个数$$脚本运行的当前进程ID号,用例&#xff1a;当一个进程重…

python变量命名可以有特殊符号吗,和孩子一起学习python之变量命名规则

下面是关于变量名(也称为标识符)的一些规则必须以一个字母或一个下划线字符开头。后面可以使用一个字母、数字或下划线字符的序列&#xff0c;长度不限。字母可以是大写或小写&#xff0c;大小写是不同的。也就是说&#xff0c;Ax不同于aX。数字可以是从0到9(包括0到9)的任意数…

C语言中*和

(一) 在定义时&#xff0c;* 是一个标识符&#xff0c;声明该变量是一个指针&#xff0c;比如说int *p; 那p就是一个指向int型的指针&#xff1b; 在调用时&#xff0c; &#xff08;1&#xff09;*p是指指针p指向的那个变量&#xff0c;比如说之前有int a5&#xff1b;int …

IT人的好习惯和不良习惯总结

好习惯&#xff1a; 细节一&#xff1a;在电脑旁放上几盆植物&#xff0c;传说仙人掌可以有效地吸收辐射&#xff0c;但是会扎到人&#xff0c;而且有没效果也没科学根据&#xff0c;不推荐&#xff1b;其实只要是绿色植物就可以&#xff0c;植物可以让你多点氧气&#xff0c;保…

【BZOJ 3326】[Scoi2013]数数 数位dp+矩阵乘法优化

挺好的数位dp……先说一下我个人的做法:经过观察,发现这题按照以往的思路从后往前递增,不怎么好推,然后我就大胆猜想,从前往后推,发现很好推啊,维护四个变量,从开始位置到现在有了i个数 f[i]:所有数的所有未包含最后一位的子串的和 s[i]:所有数的所有后缀子串的和 c[i]:所有数的…

zookeeper伪集群(在一台机器上集群)

2019独角兽企业重金招聘Python工程师标准>>> 创建一下的目录结构zookeeper-3.4.10是你下载的zookeeper的解压包 /zookeeper_cluster----/server_one|---/data|myid(文件)|---/datalog|---/zookeeper-3.4.10|---/bin|---/conf|---zoo.cfg|---..... |---/....----/ser…

mongo的php查询,使用PHP进行简单查询的mongo查询速度慢

我有一个非常简单的使用PHP执行的Mongo Query。我相信查询执行得非常快&#xff0c;因为当我在终端上运行它时&#xff0c;它几乎可以立即完成&#xff0c;并且当我解释()时&#xff0c;它表明它正在1-2ms内执行。但是&#xff0c;当我去迭代游标并将内容放入数组时&#xff0c…

顺序存储结构和链式存储结构的优缺点

&#xff08;一&#xff09;顺序存储结构和链式存储结构的优缺点比较&#xff0c;以及使用情况。 1 优缺点 ① 顺序存储时&#xff0c;相邻数据元素的存放地址也相邻&#xff08;逻辑与物理统一&#xff09;&#xff1b;要求内存中可用存储单元的地址必须是连续的。 优点&…

大话软件开发与开车的共同点

昨天路上开车&#xff0c;突然有了这个想法&#xff0c;做软件开发与开车&#xff0c;竟然有这么多的相似之处&#xff0c;大致整理了一下思路&#xff0c;和大家分享一下。 一、目的 开车的目的有3个&#xff0c;第一是为了让自己到底目的地(上班族)&#xff0c;第二是为了兜…

Spring核心接口之Ordered

一、Ordered接口介绍Spring中提供了一个Ordered接口。从单词意思就知道Ordered接口的作用就是用来排序的。Spring框架是一个大量使用策略设计模式的框架&#xff0c;这意味着有很多相同接口的实现类&#xff0c;那么必定会有优先级的问题。于是Spring就提供了Ordered这个接口&a…