读书人

一个求 PI =3.1415926的算法求解,该

发布时间: 2013-06-26 14:29:32 作者: rapoo

一个求 PI =3.1415926的算法,求解
#include <stdio.h>
#include <math.h>
int main ()
{
  int i,n,s;
   double k,y2;
  printf("输入切割次数:");
 scanf("%d",&n);
  i=0;//切割次数
  k=3.0; //初始值
  y2=1.0; //内接六边形的边长
  s=6;//初始内接多边形的边数
while(i<=n)
{
  printf("第%d次切割,为%d边,PI=%.24f\n",i,s,k*sqrt(y2));
  s*=2; //边数增加1倍
  y2=2-sqrt(4-y2); //弦长
i++;
  k*=2.0;
}
getch();
return 0;
}

//输入15以内的切割,结果好像是正确的,但是 
//y2=2-sqrt(4-y2); //弦长  让人无法理解,我画了一个图总感觉不对,求指点。。。 算法
[解决办法]
内接六边形的边长是y,而不是y2 。
下面程序里的y2是y的平方的意思。
外切圆的半径是1 。
y^2(这个y是切割后的多边形的边长) = 2 - squr(4-y^2(这个y是切割前的多边形的边长))
K * =2;(多边形的边增加了1倍)
PI= K * sqrt(y^2);
你再画一个图看就好理解了。

[解决办法]
我的回复怎么不见了。
y是正多边形的一条边长。
y^2 = 2 - sqrt(4 - y^2);
依据勾股定理,用上一次的y值和半径值(r为1)经过计算得到本次的y值。

读书人网 >C语言

热点推荐