割圆术计算圆周率

“割圆术”是我国数学家刘徽创立的一种求圆周率的方法。思想是当圆的内

接正多边形的边数无限大时内接正多边形的面积就无限趋近于圆的面积,即所

谓 “割之弥细,所失弥少,割之又割,以至于不可割,则与圆周合体无所失

矣”。

“割圆术”理论上能把π的精度计算到任意精度。现在我们利用计算机能够

自动的完成这个过程。我们先来分析一下圆的内接正六边形、正十二边形、正

二十四边形······的面积之间的关系,寻求它们的递增规律。

hn xn sn

如图,设圆的半径为1,弦心距为 ;正n边形的边长为 ,面积为 。由

2 2

xn xn 2

x2n( (1hn)

勾股定理,得hn  1( ) , 2) ,(n≥6)。

2

O是原点、hn是弦

心距、xn是正n边形

的边长、x2n是正2n

边形的边长

不难发现,正2n边形的面积等于正n边形的面积加上n个等腰三角形的面

1

积,即s2nsnn xn(1hn),(n6) 。利用这个递推公式和n=6时的面积、弦心

2

距就能不断循环得到一个比较接近圆的面积的值。因为圆的半径是1,所以面

积为π,那么正2n边形的极限值即为π的值。

现在我们用c语言来计算该近似值,利用初值和递推关系来循环计算。

由于用到了sqrt ()这个数学函数,所以要包含math.h这个头文件。程序结

果的输出利用了printf()这个函数,所以要包含printf()所在的头文件,即

Stdio.h。

我使用的编译器为gcc IDE为Dev c++,下面是示例代码

#include

#include

int main()

{

long int n;/*定义内接正多边形的边数*/

double h,x,s;/*h是弦心距,x是边长,s是面积*/

for(n=6,x=1,s=3*sqrt(3)/2;n<=5999;n+=n)/*n 的初值为

6,此时设x 的值就是单位圆的半径1,

s的值为正六边形

的面积 n每次循环后加一倍 */

{

h=sqrt(1-x*x/4);//算2n边形的弦心距

s+=n*x*(1-h)/2;//算2n边形的面积

x=sqrt((x*x)/4+(1-h)*(1-h));//算2n边形的边长

}

printf("%.9f",s);

return 0;

}

运行结果如下

本文完工与2015-02-13 01:20 我的第一篇算法说明文档。处女作

啊!希望以后保持这个节奏,每天写写研究算法的心得和收获,记录自己的一

些进步。

割圆术c语言程序设计,c语言实现割圆术计算圆周率.pdf相关推荐

  1. c c 语言程序设计同步,第一部分C语言程序设计C语言程序设计同步练习答案.PDF...

    第一部分C语言程序设计 C语言程序设计同步练习答案 第1章 绪论 一.单选题 1-5 DBCAC 二.判断题 1. 错 2. 错 第2章 C语言基本数据类型.运算符和表达式 一.单选题 1-5 ADA ...

  2. 【MOOC嵩天Python语言程序设计】第9周 Python计算生态概览

    [MOOC嵩天Python语言程序设计]第9周 Python计算生态概览 9.1 从数据处理到人工智能 9.2 实例15:霍兰德人格分析雷达图 9.3 从Web解析到网络空间 9.4 从人机交互到艺术 ...

  3. 无人机c语言程序设计,c语言程序设计课程设计单元设计教案).pdf

    <C语言程序设计> 课程整体教学设计 (2019-2020学年第1 学期) 课程名称: C 语言程序设计 所属系部: 机电与汽车工程学院 制定人: 张三 合作人: 制定时间: 2019.9 ...

  4. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

  5. 江西理工大学c语言程序设计,C语言程序设计

    大家好!欢迎你们!无论是新同学还是老朋友,都非常高兴能在这里和大家相聚! 我们一如既往还说C,因为它称霸于计算机语言,超乎我们的想象. 如果想深刻的理解这个时代,就要理解计算机编程! 编程完成了基于计 ...

  6. c语言小饭店等位就餐程序,C语言程序设计 C语言程序设计 3.C语言程序设计教案全部.doc...

    C语言程序设计教案 PAGE PAGE 2 C语言程序设计教案 C语言程序设计教案 编写:宋铁桥 计算机技术系 二〇一七年三月整理 河北工业职业技术学院 <C语言程序设计>课程教案首页 授 ...

  7. 尚展垒等编著c语言程序设计,C语言程序设计技术实践指导

    本书是<C语言程序设计技术>(尚展垒等编著,中国铁道出版社出版)配套使用的学习用书,每个实验对应主教材的相关内容.本书所使用的运行环境是Visual Studio 2010,与全国计算机等 ...

  8. 陇东学院c语言程序设计,C语言程序设计

    spContent=<C语言程序设计>是高等学校本科教育普遍开设的一门课程,是广大程序设计语言学习者首选的入门课程.本课程立足于C语言基础知识的讲解,讲授中引入大量实例,突出重点,剖析难点 ...

  9. 华中科技大学标准c语言程序设计上机试题,答案及报告格式,华中科技大学标准C语言程序设计上机试题、答案及报告格式.pdf...

    <标准 语言程序设计>上机报告 <标准 语言程序设计>上机报告 C C 实验七 指针及函数结构体初步程序设计 实验七 指针及函数结构体初步程序设计 专业: 专业: 班级: 班级 ...

最新文章

  1. SAP MM 向交货单的存在不阻止PO被删除
  2. DOS 如何取当前时间做为文件名?
  3. AndroidのUI设计研究(一)——自定义ProgressBar
  4. WCF面向服务应用程序系列之十:绑定-标准绑定(HTTP/TCP)
  5. 即将改变软件开发的5个Java9新特性
  6. cisco 次优路由
  7. paip.提升性能---首页性能加快解决方案
  8. 游戏计算机重要参数,这真的很重要吗 游戏鼠标三大参数之谜
  9. [Unity][摄像机视角]多个摄像机之间切换
  10. 如何刷新bios?在windows系统上刷新bios的方法
  11. VxVM Volume Snapshot Issue -- 卷快照删除失败示例一
  12. 微信公众号最佳实践 ( 10.3)获取微信版本及手机系统
  13. 关于anchor的解释
  14. .Net/C#: 一个将在线简体中文网页转为繁体中文页简单方法
  15. 技术学校面试该说什么_我第一次现场技术面试后,香港专业教育学院学到了什么...
  16. 零基础学前端开发培训
  17. C语言程序设计|文件操作
  18. Ghost 系统备份与恢复(图解)
  19. php 小偷,php 小偷程序实例
  20. 秋招面试题“背”好了,那简历呢?

热门文章

  1. 能够破解网站禁止复制的插件:Enable Copy
  2. C语言 Windows文件选择对话框
  3. RSS从入门到精通(转载)
  4. manjaro安装tim
  5. 基于MFC实现大华监控摄像头Demo(视频流和抓图)
  6. RTOS系统与Linux系统的区别
  7. KEIL调用Show Disassembly at Adress的方法
  8. 知道焊缝长度如何确定节点板尺寸_钢桁架节点图 中各尺寸确定原则 总结
  9. 钱宝网500亿的“庞氏骗局”崩塌始末
  10. 示波器表笔旁边的夹子是什么_示波器探头容易忽略的几个问题