PI 的蒙特卡洛近似

计算科学 蒙特卡洛 几何学
2021-12-22 03:32:11

我试图了解如何通过蒙特卡洛模拟来计算 Pi 的值。我在正方形内有一个圆,正方形的边与圆相切。作为数据,我有随机点的数量以及正方形一侧的长度与直径之间的比率。

ld=ra

根据我读过的内容,我必须计算圆圈内的点数和总点数。圆的面积是,正方形的面积是要检查一个点是否在圆圈内,我必须检查Acircle=πr2Asquare=l2x2+y2<=r

我不知道如何将比率与半径联系起来,以便检查该点是在圆内还是圆外。有什么建议吗?ra

更新

这是一件非常令人沮丧的事情,并且是蒙特卡洛近似的一个非常简单的例子。

假设那么我有 因此,要检查一个随机点是否在圆内,我只需要检查那个d=1ld=l=ra

x2+y212

或者它必须与比率有关?ra

3个回答

假设您的圆具有单一半径:,则正方形边长等于r=1l=rad=2ra

因此,圆的面积等于,正方形的面积等于Sc=πSs=4ra2

如果您在正方形内“扔”随机点,其中一部分(例如)将落入圆圈中。关系等于它们的面积比例NtNcNcNtScSs

NcNt=ScSs

现在,要计算,您应该将N_c并乘以πNcNtSs

π=4ra2NcNt

如果是单一的你应该设置lr=12ra

我不认为你能找到半径r与您提供的信息。例如,您可以想象拥有

  • 一个有直径的圆d=1居中在一个有边的正方形中l=1
  • 一个有直径的圆d=2居中在一个有边的正方形中l=2

两个圆都将与各自的正方形相切,并且都产生ra=1. 因此,如果您的数据仅包含在ra,你无法区分这两种情况。

在这种情况下,数据ra似乎甚至没用,因为要获得与正方形边相切的圆,您需要ra=1.

如果你想忘记圆与正方形相切的假设,你仍然可以近似π对于不同的值ra但是您需要修改公式,这并不能解决您的查找问题r.

最后一点是,实际上,r没关系:如果您在大小为 1 的正方形中有一组随机点,您可以缩放它们以使它们出现在大小为 1 的正方形中l(无论是l)。将公式应用于大小为 1 或大小的正方形l会给你完全相同的近似值π.

是的,这只是一个简单的拒绝采样应用程序。

只需绘制均匀分布在正方形定义的空间中的随机数,例如 (0,1) ..

跟踪您接受哪些数字(落在圆圈内;半径,r=0.5),以及您拒绝哪些数字(落在圆圈外)

请记住偏移 r=sqrt(x^2+y^2) 的标准,以便您将随机数评估为其距圆心的距离(例如 [0.5,0.5] = [x,y] 如果你的正方形是 (0,0),(0,1),(1,1),(1,0))

面积圆:pi * r * r

面积平方:l*w

比率 --> 接受/(接受+拒绝)= 面积圆/面积平方

                                    = pi * r * r / l * w
                                    = pi*(0.5*0.5)/1*1

等等。

您可以查找拒绝抽样......这是蒙特卡洛方法

好老布冯的针