对蒙特卡洛Pi估计的误解


9

我相当确定我了解蒙特卡洛积分的工作原理,但不了解如何用它来估算Pi。我将按照此演示文稿第5张幻灯片中概述的步骤进行操作,网址为http://homepages.inf.ed.ac.uk/imurray2/teaching/09mlss/slides.pdf

我了解初步步骤。Pi等于单位圆四分之一面积的4倍。并且以(0,0)为中心的单位圆的右上四分之一的面积等于曲线的积分,即和单位圆的右上四分之一的曲线。。 0<x<10<y<1

我不明白的是这个积分是如何

I((x2+y2)<1)P(x,y)dxdy

其中P(x,y)在四分之一圆周围的单位正方形中均匀分布(即,如果0<x<10 <y <1则始终等于1,否则等于0<y<10)。因此,这意味着 I((x2+y2)<1)P(x,y)
是在0<x<10 <y <的情况下单位圆右上象限的函数1,0<y<1但我不明白这是怎么回事,因为指标函数只能是1或0。我理解它可能是通过这种方式编写的,以简化蒙特卡洛采样(即,这是一种期望,因此仅从P(x,ÿ并获得应用于I((x ^ 2 + y ^ 2)<1)的样本的平均值一世X2+ÿ2<1个),但对我来说,这在直觉上没有意义,为什么该积分表示该曲线下方的面积。

有人可以对此提供直观的解释。也许说明该积分是如何逐步生成的?

编辑:

通过将期望与某个领域相关联,我能够获得更好的理解。如果有帮助,我将在这里进行解释。首先将Pi与单位圆的右上象限区域相关联

π=4×一个Ť[R

然后,将右上象限放入单位正方形。在单位正方形上均匀分布的情况下,圆象限的面积与从中获取样本的概率成正比。因此,以下等式成立

PX2+ÿ2<1个=一个Ť[R一个sqü一个[RË

并且这样一个sqü一个[RË=1个

PX2+ÿ2<1个=一个Ť[R

并代入原方程

π=4×PX2+ÿ2<1个

同样,等于原始的双积分。PX2+ÿ2<1个=Ë[一世X2+ÿ2<1个]

因此,我通过将面积与概率相关联,然后将该概率与与积分等效的期望相关联来理解它。让我知道我是否犯了任何错误。

Answers:


8

半径为的圆的面积等于。这意味着四分之一圆的面积为。这意味着边长为圆的半径为的正方形。π22π/4一个[RË一个=2

这意味着四分之一圆的面积与正方形的面积之比为。 π/4

如果则点 在正方形中。如果则在圆弧的四分之一处 。 Xÿ0<X<1个0<ÿ<1个0<X<1个0<ÿ<1个X2+ÿ2<1个

您的积分为恰好是四分之一圆所描述的面积一世X2+ÿ2<1个PXÿ=一世X2+ÿ2<1个一世0<X<1个一世0<ÿ<1个

在此处输入图片说明


我想我在绘制积分内部的项和曲线本身之间的联系时遇到了困难。如果针对x和y的不同值绘制I(x ^ 2 + y ^ 2 <1)I(0 <x <1)(0 <y <1),则不会得到曲线。这是为什么?
user1893354 2014年

1
{XÿX2+ÿ2<1个0<X<1个0<ÿ<1个}是圆弧四分之一上的点。我建议您尝试绘制这些点
Donbeo 2014年

我同意这一点。(。)但是,当你申请的指示功能我,他们都被推到1或0
user1893354

你什么意思?
Donbeo 2014年

1
积分中的指标函数只是定义曲线计算积分的另一种方法。qü一个[RŤË[R ØF C一世[RCË=1个X2+ÿ2<1个1个0<X<1个1个0<ÿ<1个
Donbeo 2014年

4

最简单的直观解释依赖于对理解。因此,。一旦意识到双整数只是一个概率,就应该具有直观的意义,您可以从单位平方中采样和并计算的抽取比例。 Ë一世一个=P一个一世X2+ÿ2<1个dXdÿ=PX2+ÿ2<1个XÿX2+ÿ2<1个

您的理解中可能缺少的另一种直觉是面积与概率之间的联系。由于整个单位正方形的面积为1,并且点在正方形内均匀分布,因此单位正方形内任何区域的面积将对应于随机选择的点在内的概率。Xÿ一个一个


这也是我理解的方式。但是我在将其连接到公式Pi = 4x(四分之一圆的面积)时遇到了麻烦。将区域与样本进行比较并没有真正的直观意义。我想联系是在均匀分布下,样本数与面积成正比。
user1893354 2014年

1
@ user1893354答案已修改。让我知道这是否有助于您的直觉。
2014年

0

我进入了这个网上冲浪简历,我发现蒙特卡洛的代码在八度。我碰巧在R中进行了一个模拟,使得在OP中积分约束下,将数字作为平面中的双变量均匀分布的想法非常直观:π[01个]

假设以四分之一圆包围一个1单位的正方形,则面积为。因此,在正方形生成均匀分布的点将最终覆盖整个正方形,并且计算满足的分数将等于对因为我们只是选择小数圆内相对于单位正方形的点数:π/4Xÿ1个<X2+ÿ21个X2+ÿ2<1个1个0<X<1个1个0<ÿ<1个

x <- runif(1e4); y <- runif(1e4)
radius <- sqrt(x^2 + y^2)
# Selecting those values within the circle is obtained with radius[radius < 1]:
(pi = length(radius[radius < 1]) / length(radius)) * 4     =    3.1272

我们可以绘制10,000次绘制中半径范围内的值:

在此处输入图片说明

通过选择更多的点,我们自然可以越来越接近。凭借一百万分,我们可以获得:

(pi = length(radius[radius < 1]) / length(radius)) * 4 [1] 3.141644

一个非常近似的结果。这是情节:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.