计算π的方法

一、蒙特卡罗法

这种方法是一种利用计算机随机数的功能基于“随机数”的算法,通过计算落在单位圆内的点与落在正方形内的
点的比值求PI。

由于图形的对称性,我们靠考虑该图的四分之一部分。
假定一点能够均匀地扔到一个正方形中,计算落入其中的点个数。通过计数其中落入内切圆的点的个数;
如果一共投入N个点,其中有M个落入圆中,则只要点均匀,假定圆周的半径为R,则:

MN=πR2(2R)2,即π=4∗MN(1)(1)MN=πR2(2R)2,即π=4∗MN

{\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

可以看出来,该方法投入点的个数越大,越接近真实值。

二、数学公式(级数)

由数学公式:

∑n=1∞(1n2)=π6(2)(2)∑n=1∞(1n2)=π6

\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(π)的几种方法相关推荐

  1. java 求pi_计算PI(π)的几种方法

    计算π的方法 一.蒙特卡罗法这种方法是一种利用计算机随机数的功能基于"随机数"的算法,通过计算落在单位圆内的点与落在正方形内的 点的比值求PI. 由于图形的对称性,我们靠考虑该图的 ...

  2. 现代密码学3.1--定义计算安全的两种方法

    现代密码学3.1--定义计算安全的两种方法 三种安全性定义 定义计算安全的两种方法 具体方法/concrete approach 渐进方法/asyptotic approach "高效/PP ...

  3. 网络基础知识 快速计算子网掩码的2种方法

    网络基础知识 快速计算子网掩码的2种方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

  4. php中计算时间差的几种方法,php计算时间差的方法

    一个简单的例子:计算借书的天数,根据每天的日期进行计算. (1) 有数据库的情况 MSSQL可以使用触发器!用专门计算日期差的函数datediff()便可. MYSQL那就用两个日期字段的差值计算的计 ...

  5. linux c计算时间差值,获取时间和计算时间差的几种方法总结,时间差几种方法...

    获取时间和计算时间差的几种方法总结,时间差几种方法 一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( ...

  6. [C++] 计算行列式的若干种方法

    计算行列式的三种方法 测试样例 按行(列)展开法 计算结果 高斯消元转化为上三角阵 计算结果 尝试引入permutation operation 尝试使用分数运算 定义法 代码 测试结果 有问题欢迎提 ...

  7. 个人所得税递归函数C语言,C语言实现 计算个人所得税务2种方法

    #include #include /* 基于C语言的个人所得税计税系统 问题描述: 我国现行的个人所得税计算方法如下: 级数 全月应纳税所得额   税率(%) 1 不超过500元的    5 2 超 ...

  8. 漫谈分子动力学计算热导率的五种方法

    关注 Mr.material,\color{Violet} \rm Mr.material\ ,Mr.material , 更\color{red}{更}更多\color{blue}{多}多精\col ...

  9. c语言windows获取时间,【转载】c/c++在windows下获取时间和计算时间差的几种方法总结...

    一.标准C和C++都可用 1.获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t time ...

最新文章

  1. React后台管理系统-商品列表搜索框listSearch组件
  2. 转:python模块学习 ---- smtplib 邮件发送
  3. 订单可视化(智能制造、流程再造、企业信息化) 第三篇 订单可视化定义及目标...
  4. matlab中线性变压器,用MATLAB优化计算差动变压器的线性范围
  5. bucket sort count sort
  6. linux系统下用GCC、JAVA和Python编程
  7. idea添加jboss_如何将云持久存储添加到JBoss Cool Store
  8. 构建第一个Flex的Mobile APP
  9. 在 phpMyAdmin 里添加新用户帐号
  10. 很少人知道,但是非常实用的 Python 库
  11. UI必不可少!手机计算器界面设计可学习案例
  12. Elasticsearch高级查询2:ES 高级查询
  13. [置顶] 第十七章——配置SQLServer(2)——32位和64位系统中的内存配置
  14. 编程软件哪个比较好用?
  15. iris鸢尾花数据集java_鸢尾花数据集(Iris)
  16. 2.1数据库-MySQL
  17. BootCDN——React入门学习
  18. 鸟哥的linux私房菜_linux磁盘与文件系统管理
  19. pn532检测不到nfc设备_华为、小米又增回NFC功能,苹果却一直无NFC功能,NFC能否成为关键?...
  20. Java对接云mas发送短信(https方式)

热门文章

  1. 5.6.3 列表到字典的函数,针对好玩游戏的物品清单
  2. Odoo产品分析 (三) -- 人力资源板块(4) -- 招聘流程(1)
  3. router-view添加key解决同一路由复用相同组件
  4. 【自监督学习】主题论文推荐
  5. SHOI2002 百事世界杯之旅
  6. 【数据库】四(1)、数据查询之单表查询
  7. 数据结构与算法:用链表实现无序列表。
  8. [转帖]从磁悬浮到奔驰公交——中国式发展的糜烂
  9. docker网络的配置
  10. 云教室服务器装系统,在Windows Server 2012R2上安装DoraCloud搭建学校云教室