如何用r语言实现布丰投针问题?

如何用r语言实现布丰投针问题?,第1张

原文链接:http://tecdat.cn/?p=13033

介绍

布丰投针是几何概率领域中最古老的问题之一。它最早是在1777年提出的。它将针头掷到有平行线的纸上,并确定针和其中一条平行线相交的可能性。令人惊讶的结果是概率与pi的值直接相关。

R程序将根据上段所述的情况估算pi的值并使用gganimate进行动态可视化。

第1部分

对于A部分,我们创建一个数据帧,该数据帧将在3个不同的区间上生成随机值,这些区间将代表x,y的范围以及每个落针点的角度。这是一个易于实现的随机数情况斗庆,需要使用runif函数。此功能要求输入数量,后跟一个间隔。生成数字后,我们会将值保存到数据框中。

rneedle <- function(n) {

x = runif(n, 0, 5)

y = runif(n,0, 1)

angle = runif(n,-pi, pi) #从-180到180的角度

values<-data.frame(cbind(x, y, angle))

return(values)

}

values<-rneedle(50)

#检查是否生成50×3矩阵

values

#我们的数据帧已经成功生成。

         x           y      angle

1  4.45796267 0.312440618  1.3718465

2  3.43869230 0.462824677  2.9738367

3  2.55561523 0.596722445 -2.9638285

4  3.68098572 0.670877506 -0.6860502

5  0.03690118 0.202724803 -0.3315141

6  4.64979938 0.180091416 -0.3293093

7  4.92459238 0.172328845 -0.5221133

8  3.50660347 0.752147374  2.9100221

9  2.03787919 0.167897415 -0.3213833

10 0.38647133 0.539615776 -0.1188982

11 3.28149935 0.102886770 -1.6318256

12 3.68811892 0.765077533  1.2459037

13 1.52004894 0.682455494 -0.4219802

14 3.76151379 0.508555610  0.1082087

...

第2部分

我们绘制第一部分中的针。重要的是不要在这个问题上出现超过2条水平线。它使我们可以进行检查以了解此处描绘的几何特性的一般概念。话虽如此,让我们注意我们决定在每个方向上将图形扩展1个单位。原因是想象一个针尾从y = 1开始,其角度为pi / 2。我们需要假设该方向的范围最大为2。

plotneedle(values)

第3部分

在下面,将基于阅读布冯针和基本几何原理的知识,查看pi的估算值。

buffon(values)

第4部分

运行代码后,我们收到以下答案。

>buffon(X)

[1] 3.846154

set.seed(10312013)

X <- rneedle(50)

plotneedle(X)

buffon(X)

>buffon(X)

[1] 3.846154

第5部分

如前几节所述,当我们投掷更多的针头时,我们期望以最小的不确定性获得更准确的答案。从Approxpi函数运行代码后,我们收到了平均值= 3.172314和方差0.04751391的值。对于这样一个简单的实验,它对pi进行了很高的估计。

Approxpi(500)

mean(Approxpi(500))

var(Approxpi(500))

>mean(Approxpi(500))

[1] 3.172314

>var(Approxpi(500))

[1] 0.04751391

接下来对模拟次数从500~600的预测进行动态可视化,红色表瞎销旁示针投放到了直线上:

参考资料

Schroeder,磨橡L.(1974年)。布冯针问题:许多数学概念的激动人心的应用。

最受欢迎的见解

1.R语言动态图可视化:如何、创建具有精美动画的图

2.R语言生存分析可视化分析

3.Python数据可视化-seaborn Iris鸢尾花数据

4.r语言对布丰投针(蒲丰投针)实验进行模拟和动态

5.R语言生存分析数据分析可视化案例

6.r语言数据可视化分析案例:探索brfss数据数据分析

7.R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图

8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

9.python主题LDA建模和t-SNE可视化

分类: 理工学科

问题描述:

将一下圆周率的事情

解析:

在1777年出版的《或然性算术实验》一书中提出他的著名的投针问题,蒲丰提出了用实验概率方法计算 π 。这个实验方法的 *** 作很简单:找一根粗细均匀,长度为 d 的细针,并在一张白扒悉判纸上画上一组间距为 l 的平行线(方便起见,常取 l = d/2),然后一次又一次地将小针任意投掷在白纸上。这样反复地投多次,数陆氏数针与任意平行线相交的次数,于是就可以得到 π 的近似值。因为蒲丰本人证明了针与任意平行线相交的概率为 p = 2l/πd 。利用这一公式,可以用概率方法得到圆周率的近似值。在一次实验中,他选取 l = d/2 ,然后投针2212次,其中针与平行线相交704次,这样求得圆周率的近似值为 2212/704 = 3.142。当实验中投的次数相当多时,就可以得到 π 的更精确的值。

1850年,一位叫沃尔夫春改的人在投掷5000多次后,得到 π 的近似值为3.1596。目前宣称用这种方法得到最好结果的是意大利人拉兹瑞尼。在1901年,他重复这项实验,作了3408次投针,求得 π 的近似值为3.1415929,这个结果是如此准确,以致于很多人怀疑其实验的真伪。如美国犹他州奥格登的国立韦伯大学的L·巴杰就对此提出过有力的质疑。

不过,蒲丰实验的重要性并非是为了求得比其它方法更精确的 π 值。蒲丰投针问题的重要性在于它是第一个用几何形式表达概率问题的例子。计算 π 的这一方法,不但因其新颖,奇妙而让人叫绝,而且它开创了使用随机数处理确定性数学问题的先河,是用偶然性方法去解决确定性计算的前导。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12326240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存