编程求pi的值
答案:1 悬赏:70
解决时间 2021-02-16 15:02
- 提问者网友:咪咪
- 2021-02-15 23:32
编程求pi的值
最佳答案
- 二级知识专家网友:荒野風
- 2021-02-15 23:39
利用“正多边形逼近”的方法求出π值在很早以前就存在,我们的先人祖冲之就是用这种方法在世界上第一个得到精确度达小数点后第6位的π值的。
利用圆内接正六边形边长等于半径的特点将边数翻番,作出正十二边形,求出边长,重复这一过程,就可获得所需精度的π的近似值。
假设单位圆内接多边形的边长为2b,边数为i,则边数加倍后新的正多边形的边长为:
周长为:
y=2 * i * xi:为加倍前的正多边形的边数
*程序与程序注释
#include
#include
void main()
{
double e=0.1,b=0.5,c,d;
long int i;//i: 正多边形边数
for(i=6;;i*=2)//正多边形边数加倍
{
d=1.0-sqrt(1.0-b*b); //计算圆内接正多边形的边长
b=0.5*sqrt(b*b+d*d);
if(2*i*b-i*e<1e-15) break; //精度达1e-15则停止计算
e=b;//保存本次正多边形的边长作为下一次精度控制的依据
}
printf("pai=%.15lf\n",2*i*b); //输出π值和正多边形的边数
printf("The number of edges of required polygon:%ld\n",i);
}
*运行结果
pi=3.141592653589794
The number of edges of required polygon:100663296
来源:考试大-计算机二级考试
利用圆内接正六边形边长等于半径的特点将边数翻番,作出正十二边形,求出边长,重复这一过程,就可获得所需精度的π的近似值。
假设单位圆内接多边形的边长为2b,边数为i,则边数加倍后新的正多边形的边长为:
周长为:
y=2 * i * xi:为加倍前的正多边形的边数
*程序与程序注释
#include
#include
void main()
{
double e=0.1,b=0.5,c,d;
long int i;//i: 正多边形边数
for(i=6;;i*=2)//正多边形边数加倍
{
d=1.0-sqrt(1.0-b*b); //计算圆内接正多边形的边长
b=0.5*sqrt(b*b+d*d);
if(2*i*b-i*e<1e-15) break; //精度达1e-15则停止计算
e=b;//保存本次正多边形的边长作为下一次精度控制的依据
}
printf("pai=%.15lf\n",2*i*b); //输出π值和正多边形的边数
printf("The number of edges of required polygon:%ld\n",i);
}
*运行结果
pi=3.141592653589794
The number of edges of required polygon:100663296
来源:考试大-计算机二级考试
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯