利用多边形逼近法求圆周率 C语言

zhaoweiting0609 2010-06-06 03:00:03
提示:我国古代数学家祖冲之就是用这种方法在世界上第一个得到精确度达小数点后第
6位的圆周率的。利用圆内接正六边形边长等于半径的特点,将边数翻番,作出正十二边形,
求出新的边长。重复这一过程。因为圆周长l = 2pr ,圆的周长可用正n边形的周长代替,
将其除以正六边形的边长二倍即可得到π值。
程序中假设初始时正六边形边长为1,分割到某次时正多边形的边长aa x i 2 1 = - ,我们
来求下一次分割的边长,图1中
ob 1 x2 i = -
aa ab2 a b2 ab2 (1 ob )2 x2 (1 1 x2 )2


要求:自定义一个函数double calPI(int n),形式参数n为正多边形的边数,返回值为double
型的π值。


等高人帮助解答
谢谢
...全文
368 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamjack 2010-07-22
  • 打赏
  • 举报
回复
对,用级数比较好做
FancyMouse 2010-07-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 michael122 的回复:]
程序求的话一般都是用泰勒展开比较方便吧
[/Quote]pi倒是个很有趣的东西。直接4*atan(1)的话那个收敛速度太慢。a*tan(x)+b*tan(y)形式的是早期的快速算pi的办法。基本上现代计算机用的是后来高斯勒让德(i.e. AGM方法)或者拉马努金的成果。

算pi的某个特定二进制位还有特殊的办法,可以不用求前面的数码而快速求出,算是一个比较surprising的结果。
a375087658 2010-07-21
  • 打赏
  • 举报
回复
高手高手啊。。。
zeroieme 2010-07-21
  • 打赏
  • 举报
回复
作业又见作业
pandaboke 2010-07-21
  • 打赏
  • 举报
回复
哇!高手,高手,高高手!
michael122 2010-06-07
  • 打赏
  • 举报
回复
程序求的话一般都是用泰勒展开比较方便吧
超级大笨狼 2010-06-06
  • 打赏
  • 举报
回复
利用级数可以求
budweiser 2010-06-06
  • 打赏
  • 举报
回复
不过 double calPI(int n) 很好实现啊。

r=1
利用三角定理: 半边长=1/cos(180/n)


double calPI(int n)
{
double harfLength = 1/cos(180/n);
return n*harfLength;
}
budweiser 2010-06-06
  • 打赏
  • 举报
回复
还是看不到
zhaoweiting0609 2010-06-06
  • 打赏
  • 举报
回复
看不到图片的,可以在图片上右击,属性,然后在地址栏输入,就能看到图片的内容了
谢谢大家
zhaoweiting0609 2010-06-06
  • 打赏
  • 举报
回复
看不到图片的,可以在图片上右击,属性,然后在地址栏输入,就能看到图片的内容了
谢谢大家
zhaoweiting0609 2010-06-06
  • 打赏
  • 举报
回复
看不到图片的,可以在图片上右击,属性,然后在地址栏输入,就能看到图片的内容了
谢谢大家

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧