最近我们被客户要求撰写关于动态可视化的研究报告,包括一些图形和统计输出。


介绍

布丰投针是几何概率领域中最古老的问题之一。它最早是在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年)。布冯针问题:许多数学概念的激动人心的应用。


R语言对布丰投针(蒲丰投针)实验进行模拟和动态可视化生成GIF动画相关推荐

  1. R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值、自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N、中位数median、四分位数的间距iqr)

    R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值.自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N.中位数median.四分位数的间距iqr) 目录

  2. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过线图(line plot)来可视化主成分分析的碎石图(scree plot)

    R语言进行主成分分析(PCA).使用prcomp函数进行主成分分析:碎石图可视化(scree plot).R通过线图(line plot)来可视化主成分分析的碎石图(scree plot) 目录

  3. R语言进行主成分分析(PCA)、使用prcomp函数进行主成分分析:碎石图可视化(scree plot)、R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot)

    R语言进行主成分分析(PCA).使用prcomp函数进行主成分分析:碎石图可视化(scree plot).R通过条形图(bar plot)来可视化主成分分析的碎石图(scree plot) 目录

  4. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、size参数指定曲线粗细、palette参数自定义生存曲线的颜色

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.size参数指定曲线粗细.palette参数自定义生存曲线的颜色 目录

  5. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、绘制分面生存曲线(facet_grid)

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.绘制分面生存曲线(facet_grid) 目录

  6. R语言使用自定义函数编写深度学习Scaled Exponential Linear Unit (SELU)激活函数、并可视化SELU激活函数

    R语言使用自定义函数编写深度学习Scaled Exponential Linear Unit (SELU)激活函数.并可视化SELU激活函数 目录

  7. R语言对耐克NIKEID新浪微博数据K均值(K-MEANS)聚类文本挖掘和词云可视化

    全文链接:http://tecdat.cn/?p=31048 2009年8月,新浪微博(micro-blog)开始服务,随后各家微博服务在国内得到广泛传播和应用"(点击文末"阅读原 ...

  8. R语言使用原生包(基础导入包、graphics)中的plot函数可视化散点图(scatter plot)

    R语言使用原生包(基础导入包.graphics)中的plot函数可视化散点图(scatter plot) 目录

  9. R语言使用rnorm函数生成正太分布的随机数、使用plot函数和density函数可视化正太分布的随机数对应的密度图(Normal distribution)

    R语言使用rnorm函数生成正太分布的随机数.使用plot函数和density函数可视化正太分布的随机数对应的密度图(Normal distribution) 目录

最新文章

  1. pycharm远程调试或运行代码
  2. 小白们应当知道的配置系统变量PATH 的小技巧。
  3. python基础教程第二版和第三版哪个好-python基础教程 2版和3版哪个适合新手?!...
  4. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
  5. 不带头结点的单链表------C语言实现
  6. bzoj5093: [Lydsy1711月赛]图的价值
  7. AcWing之找替换空格
  8. 升级了 Windows 11 正式版,有坑吗?
  9. 鸟哥的私房菜Linux 学习笔记之 Bash语法
  10. 游标sql server_SQL Server游标教程
  11. 标记三维点_SSW系统在地下大型停车场三维建模中的应用研究
  12. Maven环境搭建和介绍
  13. HTTPS详解SSL/TLS
  14. HTML网页实训的目的,网页设计实习目的及意义.doc
  15. 获取FileUpload上传的文件大小
  16. 高手云集 WCTF世界黑客大师赛今日开战
  17. Android基于ksoap2调用WCF服务(二):Android篇
  18. 【系列二之图像处理系列】波形处理(2)
  19. python输出姓名_如何用Python生成若干个随机姓名?男女取名有方法,不能千篇一律...
  20. 全网最全的划分VLAN的方法,走过路过不要错过

热门文章

  1. Fujitsu UMPC U1010 发布会
  2. eclipse中,run as 没有出现java application
  3. Turbovnc使用LDAP认证
  4. 撤销Dropbox修改,恢复Dropbox误删及覆盖的文件
  5. Java项目----家庭记账软件(基于文本界面)
  6. openfire 详细介绍
  7. 用Python白嫖微信读书,你想学吗?
  8. 8-LTE EMM and ECM States
  9. 在全民监控时代,你我的隐私随时都在被贩卖?
  10. VisionMobile:2012年移动开发者经济报告(一):关键内容