首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个求 PI =3.1415926的算法,求解,该怎么处理

2013-06-26 
一个求 PI 3.1415926的算法,求解#include stdio.h#include math.hint main () {   int i,n,s    dou

一个求 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值。

热点排行