计算PI(π)的几种方法
计算π的方法
一、蒙特卡罗法
这种方法是一种利用计算机随机数的功能基于“随机数”的算法,通过计算落在单位圆内的点与落在正方形内的
点的比值求PI。
由于图形的对称性,我们靠考虑该图的四分之一部分。
假定一点能够均匀地扔到一个正方形中,计算落入其中的点个数。通过计数其中落入内切圆的点的个数;
如果一共投入N个点,其中有M个落入圆中,则只要点均匀,假定圆周的半径为R,则:
{\frac{M}{N} = \frac{πR^2}{(2R)^2},即π=4*\frac{M}{N}}\tag{1}
该方法得到的要得到π的精度与投入点的个数有关,一般个数较大时精度比较高。
java代码:随机计算π的程序
public class RandomPI {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(rand_pi(100000)); //改变参数值}public static double rand_pi(int n) {int numInCircle = 0;double x, y;double pi;for(int i=0;i < n; i++){x = Math.random();y = Math.random();if(x * x + y * y < 1) numInCircle++;}pi=(4.0 * numInCircle) / n;return pi;}
次数 | 101010 | 10210210^2 | 10310310^3 | 10410410^4 | 10510510^5 | 10610610^6 | 10710710^7 | 10810810^8 | 10910910^9 |
---|---|---|---|---|---|---|---|---|---|
估值 | 3.6 | 3.08 | 3.084 | 3.132 | 3.137 | 3.143 | 3.142097 | 3.14138508 | 3.141537232 |
可以看出来,该方法投入点的个数越大,越接近真实值。
二、数学公式(级数)
由数学公式:
\sum_{n=1}^{∞}(\frac{1}{n^2}) = \frac{π}{6}\tag{2}
java代码:随机计算π的程序
public class MathPi {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(math_Pi(1000));//改变参数值}public static double math_Pi(int n) {int numInCircle = 0;double sum = 0;double pi;for(int i=1;i <= n; i++){sum += 1.0/(i*i);}pi = Math.sqrt(sum * 6);return pi;}
}
当n取1000时就很接近真实值了n=1000时,pi=3.1406380562059946。
三、划分网格计算π
将图片分为n*n个小方形,统计落在圆内的个数占所有方形的比列。
java代码:随机计算π的程序
public class gridPI {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(grid_Pi(10));//改变参数值}public static double grid_Pi(int n) {int i;double sum=0;for(i = 0;i < n; i++)sum += (int)Math.sqrt(n*(double)n-i*(double)i);return (4.0 * sum)/n/n;}
}
次数 | 101010 | 10210210^2 | 10310310^3 | 10410410^4 | 10510510^5 | 10610610^6 | 10710710^7 | 10810810^8 | 10910910^9 |
---|---|---|---|---|---|---|---|---|---|
估值 | 3.16 | 3.1416 | 3.141548 | 3.14159052 | 3.1415925456 | 3.141592649624 | 3.141592653506 | 3.141592653587 | 3.141592654037 |
版权声明:转载注明 http://blog.csdn.net/birdreamer/article/details/79546860
计算PI(π)的几种方法相关推荐
- java 求pi_计算PI(π)的几种方法
计算π的方法 一.蒙特卡罗法这种方法是一种利用计算机随机数的功能基于"随机数"的算法,通过计算落在单位圆内的点与落在正方形内的 点的比值求PI. 由于图形的对称性,我们靠考虑该图的 ...
- 现代密码学3.1--定义计算安全的两种方法
现代密码学3.1--定义计算安全的两种方法 三种安全性定义 定义计算安全的两种方法 具体方法/concrete approach 渐进方法/asyptotic approach "高效/PP ...
- 网络基础知识 快速计算子网掩码的2种方法
网络基础知识 快速计算子网掩码的2种方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...
- php中计算时间差的几种方法,php计算时间差的方法
一个简单的例子:计算借书的天数,根据每天的日期进行计算. (1) 有数据库的情况 MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可. MYSQL那就用两个日期字段的差值计算的计 ...
- linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...
获取时间和计算时间差的几种方法总结,时间差几种方法 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( ...
- [C++] 计算行列式的若干种方法
计算行列式的三种方法 测试样例 按行(列)展开法 计算结果 高斯消元转化为上三角阵 计算结果 尝试引入permutation operation 尝试使用分数运算 定义法 代码 测试结果 有问题欢迎提 ...
- 个人所得税递归函数C语言,C语言实现 计算个人所得税务2种方法
#include #include /* 基于C语言的个人所得税计税系统 问题描述: 我国现行的个人所得税计算方法如下: 级数 全月应纳税所得额 税率(%) 1 不超过500元的 5 2 超 ...
- 漫谈分子动力学计算热导率的五种方法
关注 Mr.material,\color{Violet} \rm Mr.material\ ,Mr.material , 更\color{red}{更}更多\color{blue}{多}多精\col ...
- c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...
一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...
最新文章
- React后台管理系统-商品列表搜索框listSearch组件
- 转:python模块学习 ---- smtplib 邮件发送
- 订单可视化(智能制造、流程再造、企业信息化) 第三篇 订单可视化定义及目标...
- matlab中线性变压器,用MATLAB优化计算差动变压器的线性范围
- bucket sort count sort
- linux系统下用GCC、JAVA和Python编程
- idea添加jboss_如何将云持久存储添加到JBoss Cool Store
- 构建第一个Flex的Mobile APP
- 在 phpMyAdmin 里添加新用户帐号
- 很少人知道,但是非常实用的 Python 库
- UI必不可少!手机计算器界面设计可学习案例
- Elasticsearch高级查询2:ES 高级查询
- [置顶] 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
- 编程软件哪个比较好用?
- iris鸢尾花数据集java_鸢尾花数据集(Iris)
- 2.1数据库-MySQL
- BootCDN——React入门学习
- 鸟哥的linux私房菜_linux磁盘与文件系统管理
- pn532检测不到nfc设备_华为、小米又增回NFC功能,苹果却一直无NFC功能,NFC能否成为关键?...
- Java对接云mas发送短信(https方式)
热门文章
- 5.6.3 列表到字典的函数,针对好玩游戏的物品清单
- Odoo产品分析 (三) -- 人力资源板块(4) -- 招聘流程(1)
- router-view添加key解决同一路由复用相同组件
- 【自监督学习】主题论文推荐
- SHOI2002 百事世界杯之旅
- 【数据库】四(1)、数据查询之单表查询
- 数据结构与算法:用链表实现无序列表。
- [转帖]从磁悬浮到奔驰公交——中国式发展的糜烂
- docker网络的配置
- 云教室服务器装系统,在Windows Server 2012R2上安装DoraCloud搭建学校云教室