各种求圆周率π的算法(蒙特卡洛法的Java实现)
来源:互联网 发布:贵阳大数据交易所地址 编辑:程序博客网 时间:2024/06/10 14:46
什么是算法?简单地说,算法就是有穷规则构成的用于解决某一类问题的运算序列或执行步骤。在《算法之美:隐匿在数据结构背后的原理》第1章中我们讲到要解决一个问题可能会有不同的方法,当时所举的例子就是求圆周率π的近似值。对于这个问题你能想到多少种算法呢?
探秘算法世界,求索数据结构之道;
汇集经典问题,畅享编程技法之趣;
点拨求职热点,敲开业界名企之门。
本书内容简介及勘误表请参见《算法之美隆重上市欢迎关注(另附勘误表在此)》。
方法(1):首先根据微积分中的泰勒公式,可以使用下面这个公式来求π的近似值
方法(2):其次可以还可以利用下面这个马青公式来求解π的近似值:
马青公式由英国天文学家约翰·马青(John Machin,1686 –1751)于1706年发现,他利用这个公式计算到了100位的圆周率。此外,上式中的反三角函数可以领用下面这个泰来展开式进行计算:
方法(3):最后,也是我们准备来动手实践一下的就是利用蒙特卡洛法。这个方法背后的理论基础是概率论中的伯努利大数定律。众所周知,圆的面积公式为 S = πr2,当 r = 1 时,S = π。如果在一个边长为1的正方形中有一个内切圆,那么该圆的面积就是π/4。利用这一原理,可以假设有大量的随机点等概率均匀地落入此正方形中。若正方形的面积为S',内切圆的面积为S,如果落入正方形中的点数为 N',落入内切圆的面积为N,这时便有 S'/S = N'/N,所以可据此求得π = 4×N/N'。
下面就编写一个Java程序来实现蒙特卡洛法求π的近似值:
执行一下上述代码,然后我们来验证一下其效果如何...
可见所得到的结果较好地近似于圆周率 π 。
(本文完)
阅读全文
0 0
- 各种求圆周率π的算法(蒙特卡洛法的Java实现)
- 各种求圆周率π的算法(蒙特卡洛法的Java实现)
- 求圆周率的各种方法
- 【matlab 圆周率计算】matlab 求圆周率的两种算法实现比较
- 求圆周率的近似值
- Java算法 概率算法(蒙特卡洛概率算法求圆周率)
- Java算法 概率算法(蒙特卡洛概率算法求圆周率)
- 蒙特卡罗算法求圆周率 π
- 〖数学算法〗求圆周率的几种算法
- Java实例12 - 圆周率π的随机数算法
- 一个圆周率的算法
- 一个圆周率的算法
- Java实现计算圆周率π的两种方法
- C#和java求圆周率的近似值的比较
- 求圆周率(Go语言实现)
- 圆周率 π 的研究
- C语言求圆周率的代码
- 用蒙特卡罗方法求圆周率的介绍
- 向值栈放对象
- java反射
- 不要62 HDU
- JPA学习笔记(2)——创建JPA项目
- js实现数据持久化
- 各种求圆周率π的算法(蒙特卡洛法的Java实现)
- 2 Tesseract-ocr 系列 : Tesseract-ocr training (训练)
- 561. Array Partition I(Java)
- Theano: CNMeM is disabled, CuDNN not available
- Mysql之 replace into
- Host is not allowed to connect to this MySQL server解决方法
- cs231n two-layer network
- java.lang.IllegalArgumentException: Document base D:\apache-tomcat-pointfor\webapps\manager does not
- pyhon之Tkinter实例化学习------之----python3版