圆周率的几种C语言编程代码
更新时间:2023-04-14 04:22:01 阅读量: 实用文档 文档下载
计算π的方法
一、蒙特卡罗法(Monte Carlo)
蒙特卡洛方法是一种以概率统计理论为指导的一类非常重要的数值计算方法。蒙特卡罗是摩纳哥公国的一座城市(赌城)。Buffon投针就是蒙特卡洛方法的思想,但是Buffon是蒙特卡洛方法的起源。蒙特卡洛方法同样可以通过随机通过产生随机数的方式来解决计算问题。比如估算和计算不规则图形的面积。
图1 蒙特卡罗方法模拟
这种方法是一种利用计算机随机数的功能基于“随机数”的算法,通过计算落在单位圆内的点与落在正方形内的点的比值求PI。
图2 蒙特卡罗方法
由于图形的对称性,我们靠考虑该图的四分之一部分。假定一点能够均匀地扔到一个正方形中,计算落入其中的点个数。通过计数其中落入内切圆的点的个数;
如果一共投入N个点,其中有M个落入圆中,则只要点均匀,假定圆周的半径为R,则:
式(1)该方法得到的要得到π的精度与投入点的个数有关,一般个数较大时精度比较高。
图3 蒙特卡罗示例代码
二、数学公式(级数)
由数学公式:
式(2)当n取1000时就很接近真实值了n=1000时,pi=3.1406380562059946。
图4 级数方法示例代码
三、划分网格计算π
图5 蒙特卡罗示例代码
将图片分为n*n个小方形,统计落在圆内的个数占所有方形的比例。
图6 网格划分示例代码
Appendix 时间统计
方法一:clock统计
在待测试程序的开始部分和结束部分分别加入clock统计,两个之间的差值就是该部分代码运行时间。
需要注意的是Windows下和Linux下头文件不一样。
方法二:系统API精确统计时间
Windows 和Linux下均有精确计时方法。在Windows下可以用系统提供的API函数QueryPerformanceFrequency 和QueryPerformanceCounter 来进行高精度的计时,现在的机器基本上都提供这种高精度的计时啦,所以不用担心。利用该函数可以精确的计时到微妙级别。
QueryPerformanceFrequency() 可以得到CPU的时钟频率。
QueryPerformanceCounter() 可以通过两次的差值来得到CPU的时钟周期差值。
这样就可以计算出两次差值之间所花费的时间,当然这里计算出来的时间是秒,一般都换算为毫秒或者微秒来表示。
gettimeofday 精确到微秒级别
计时函数int gettimeofday(structtimeval *tv,struct timezone *tz);
说明:gettimeofday将时间保存在结构tv之中,strut timeval gives the number of seconds and microsecondssince the Epoch,(00:00:00 UTC, January 1, 1970), measured inmicroseconds. tz(即timezone,很少用到)一般我们使用null来代替。
保存时间的结构体
strut timeval {
long tv_sec;
long tv_usec;
};
注:需要头文件#include
正在阅读:
圆周率的几种C语言编程代码04-14
初一地理(上期)教学工作总结05-13
笑猫日记手抄报02-12
2014计算机等级考试复习题及答案06-12
初中美术全册说课qcsk - 图文05-23
移动公司经典投诉案例12-24
操作系统复习资料- 带答案12-08
全等三角形证明中考题精选(有答案)05-19
党支部组织生活会上的讲话:进一步提高工作质量和服务水平09-07
煤矿机械安装工10-26
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 圆周率
- 语言编程
- 代码
- 电磁感应中的电路问题专题练习(含答案)
- 日语中的所有汉字一览(有假名注音)之令狐文艳创作
- 电子帐册预录入系统操作手册-电子口岸
- 2022年关于收获的高中英语作文
- 2022年上半年天津期货从业基础知识:涨跌停板制度考试试卷
- (完整版)12、特殊方法测密度
- 外墙保温板施工方案
- 售后服务弱电服务及技术支持
- 计算机编程及常用术语英语词汇大全之令狐文艳创作
- 吉林市(全市)学校数量综合情况3年数据分析报告2022版
- 2022年清华大学建筑学院344风景园林基础考研冲刺密押
- 最新2022安全生产月标语
- 【异乡好居】墨尔本房价不再遥不可及,墨尔本CBD中央花园豪华公寓
- Harris_髋关节功能评分标准
- 中国大唐集团公司节能技术实施指导意见
- 会计建账及实务操作流程样题4.8
- 一分钟个人自我介绍演讲文档11篇
- 综合工时制申请的流程(1)
- 2014-2022年中国产业投资基金行业前景研究与投资潜力研究报告
- 全国版高考语文一轮复习精选提分专练第五练文言文阅读专题二考点