Monte-Carlo模拟
Monte Carlo仿真定义了一种使用大量随机样本来获得结果的计算方法。它们通常用于物理和数学问题,并且当困难或不可能使用其他数学方法时,最有用。Monte Carlo方法主要用于三个不同的问题类:优化,数值集成以及生成绘图概率分布。
当手头的问题有概率构成时,通常使用蒙特卡罗模拟。一个期望值该概率组件可以使用Monte Carlo来研究大量法。有足够的数据,即使它是随机抽样的,Monte Carlo也可以磨练问题的真相。例如,我们可以估计pi的价值通过简单地将随机针扔进到地面绘制的正方形内的圆圈中。在掉落许多针后,然后检查圆的一个象限。在圆内部的针内部的针数的针数的比率是PI非常好的近似。掉落的针头越多,近似越近。
定义
关于牛顿力学的最舒适的事情是一切都是有原因的。例如,如果按下杠杆的一端,另一端上升。你扔一个物体,它在抛物线路上行驶。物理世界是完全的确定性地点:所有未来的国家都是派生成立的。几个世纪以来,我们有这种普遍的科学智慧,然后来到哥本哈根教义,由Bohr和Heisenberg领导。这位学说的支持者认为,在最基本的层面,无法确定物理系统的行为。这导致了关于因果非确定性的有效性的严重争论,即,每项事件都没有由之前的事件造成的。像爱因斯坦和施罗格相似的人发现这种理念是不可接受的,如爱因斯坦经常重复评论:“上帝不玩骰子。”因果非确定性的问题仍然不稳定,但有充分的证据证明某些系统只能准确建模随机过程。如果下一步取决于以前的态和一些随机事件,则进程称为随机。
我们大多数人都能够计算某些事件发生的基本可能性,但我们如何解释所获得的结果的重要性?答案是,在这个快速计算机的这个时代,我们可以运行一个事件的多个模拟并记录结果并将结果与数学计算的值进行比较!然后在我们自己的眼前,我们可以看到概率理论是多么强大!
这蒙特卡罗方法是一种解决问题使用统计问题的方法。鉴于某些情况发生在某些条件下,可以使用计算机重复生成这些条件的概率。
蒙特卡洛进程
直觉
蒙特卡洛流程可能有点难以接受。如果我们只是随机收集数据,那么如何帮助我们找到正确的答案?
让我们考虑一下硬币。我们想知道硬币是否公平。公平的硬币有这些属性
如果你刚刚翻转一次硬币一时间,会发生什么?它会在头上落地或者尾巴。如果你翻转一枚硬币,它会在尾巴上落地,然后你走开,让你又证明了 那个硬币不公平?当然不是!毕竟尝试后,公平的硬币也可以在尾巴上降落。
也许你再次翻转硬币,它落在头上,从而证明这一点 ,硬币是公平的。但你是否实际证明了硬币是公平的?也许硬币不是完全公平的,但它有时会在两边落地。
也许你翻转尾巴再次,你更确信这一点 。可悲的是,我们仍然不知道,因为一个公平的硬币和一个假硬币都有能力连续两次翻身。
重点是,在我们确信这是公平之前,我们需要翻转这枚硬币。让我们用一些代码来看看这个。在以下Python段中,有一个函数,其中硬币翻转头部的概率(如果硬币是公平的,则o.5是公平的)和翻转硬币的次数。然后它会猜测硬币的公平性(再次,如果是公平的话,它是0.5。
1 2 3 4 5 6 7 8 9 |
|
让我们先看看公平的硬币。我们可以翻转硬币一次,得到尾巴,所以硬币看起来真的不公平。然后,我们做了5个翻转,看起来更好,但我们仍然没有完全相信硬币是完全公平的。即使在100次试验之后,它也很接近,但不是100%。我们需要100000翻来一翻来让我们开始相信这枚硬币是公平的(我们应该做得更完全确定)。
1 2 3 4 5 6 7 8 |
|
现在让我们翻转一个错误的硬币。我们会说这枚硬币翻转了75%的时间(所以它是一个真的假硬币)。我们一劳永逸地翻了一转,实际上有尾巴,我们的期望就越了!将其翻转5次让我们更接近我们的75%的标记,但它在5翻转后的实际展会硬币之后就像公平一样远。翻转100,100000次让我们更接近我们的标记。
1 2 3 4 5 6 7 8 |
|
这是蒙特卡罗方法的主要观点。当我们无法预测的概率(如翻转硬币)时,我们需要做的事情很多试验确保我们正确地了解系统。
练习问题
概率理论史上最有影响力的数字之一是Blaise Pascal。他对该领域的兴趣开始了当朋友问他以下问题时:
“给予一对公平骰子的24卷赌注将是有利可图的,以便在至少有一个双六六?”
编写一个使用蒙特卡洛的函数来模拟在一对骰子的二十四卷内获得一对6的概率。
只有一个卷滚动一对6的可能性是 。因此,滚动双六的可能性 劳斯是 。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16进口随机的def劳德利():“”“返回1到6之间的随机int”“”返回随机的。选择([1那2那3.那4.那5.那6.])def蒙特普尔(numtrials.):numwins.=0.0为了一世在范围(numtrials.):为了j在范围(24.):D1=劳德利()D2=劳德利()如果D1==.6.和D2==.6.:numwins.+ =1休息打印numwins./numtrials.
现在我们可以测试代码,了解我们所做的试验数量如何影响概率结果。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 17 18 19 20 21#100试验>>>蒙特普尔(100.)0.52>>>蒙特普尔(100.)0.55>>>蒙特普尔(100.)0.54#10000试验>>>蒙特普尔(10000)0.4918>>>蒙特普尔(10000)0.4875>>>蒙特普尔(10000)0.4964#100000试验>>>蒙特普尔(100000)0.49017>>>蒙特普尔(100000)0.49077>>>蒙特普尔(100000)0.49138
我们做的越多,互相答案越近。随着试验的数量延伸到无穷大,我们会收敛于答案。在这里,我们可以从我们的最后一套Monte Carlo运行中猜出,答案约为0.491或49.1%。
数学集成
Monte Carlo模拟对于解决不确定主义发挥作用的问题是有用的。然而,有趣的是,蒙特卡罗模拟(和随机算法一般来说)可用于解决并不固有的时代的问题,即,没有关于结果的不确定性。
让我们想象一个高度的矩形 , 宽度 和地区 这样的功能 在矩形的边界范围内。然后计算 对随机数 和 和 和 。分数的一小部分 和 满足条件 是一个估计 到矩形的区域。因此估计 是(谁)给的
在哪里 是沿着曲线下降的命中数量 是矩形上的命中总数。
在数值集成中,方法如梯形规则使用确定性方法。另一方面,Monte Carlo集成采用了非确定性方法:每个实现都提供了不同的结果。在蒙特卡罗,最终结果是近似值的近似值。近似值时总会有一些错误,并且蒙特卡罗的近似只是与其一样好错误界限。然而,如果收集了越来越多的样本,并且这是蒙特卡罗的力量,则可以缩小。
估计PI.
在计算机被发明之前,法国数学家巴菲(1707-1788)和Laplace(1749-1827)使用随机仿真提出以估计的价值 。想想在长度的两侧留意一个圆圈 ,所以半径 的圆圈是长度 。
我们有圈子的区域 。但是什么是 巴菲尔德建议他可以通过掉落大量针(他认为将遵循随机路径,在他们摔倒的随机路径)来估计圈子的区域。然后,可以使用与在圆圈内的尖端内的针线中的针线内的提示的针数可以用于估计圆的面积:
注意我们在圈子中掉落的针头如何,我们的近似越接近实际值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 17 18 |
|
以上算法模拟首先使用滴加针随机的
获得一对积极的笛卡尔坐标(
和
价值观)。然后它使用Pythagorean定理来计算右三角形的斜边和基础
和身高
这是针尖从原点(方形中心)的距离。由于圆的半径是
,我们知道,如果距离原点的距离不大于
。我们使用这一事实来计算圈子中的针数。
参考
- 乔,C。tr。从2016年6月22日检索到的https://en.wikipedia.org/wiki/monte_carlo_method.