程序说明与注释
#include<stdioh>
#include<mathh>
int main()
{
double e=01,b=05,c,d;
long int i; /i: 正多边形边数/
for(i=6;;i=2) /正多边形边数加倍/
{
d=10-sqrt(10-bb); /计算圆内接正多边形的边长/
b=05sqrt(bb+dd);
if(2ib-ie<1e-15) break; /精度达1e-15则停止计算/
e=b; /保存本次正多边形的边长作为下一次精度控制的依据/
}
printf("pai=%15lf\n",2ib); /输出π值和正多边形的边数/
printf("The number of edges of required polygon:%ld\n",i);
}
问题分析与算法设计
利用“正多边形逼近”的方法求出π值在很早以前就存在,我们的先人祖冲之就是用这种方法在世界上第一个得到精确度达小数点后第6位的π值的。
利用圆内接正六边形边长等于半径的特点将边数翻番,作出正十二边形,求出边长,重复这一过程,就可获得所需精度的π的近似值。
假设单位圆内接多边形的边长为2b,边数为i,则边数加倍后新的正多边形的边长为:
x=√——————
2-2√———
1-bb
——————
2
周长为:
y=2 i x i:为加倍前的正多边形的边数
#include <stdioh>
void main(){
double i,k=1,pi=0,eps;
scanf("%le",&eps);
for(i=0;k>=eps;i++)
{
k=i==01:i/(i2+1);
pi+=k;
}
printf("pi=%5f",pi2);
}
给你提个思路:
在这个公式中有几个关键点:
每一项中有一个规律变化数字1,3,5,7,后面应该是9,11;可以用i=1; i+=2;来表示。
每一项中都有规律变化分数相乘1/2 × 3/4 ×这个乘法的截止方法为分母<i。
可以根据以上方法列出计算循环代码,最后一项小于10-6为跳出循环条件;
#include<stdioh>
int main()
{
double pi=20;
double i=10;
double a= i;
double b= 2i+1;
double t=2a/b;
while(t>=1e-100)
{
pi = pi + t;
i=i+1;
a=ai;
b=b(2i+1);
t=2a/b;
}
printf("%g\n",pi);
getchar();
}
参考代码如下:
原理是 PI=SQRT((1/1^2+1/2^2+1/3^2+)6)
#include <stdioh>#include <mathh>
int main()
{
double sum,term,pi,i=1;
while(1/pow(i,2)>1E-12){
sum+=1/pow(i,2);
i++;
}
pi=sqrt(sum6);
printf("%lf",pi);
}
显示效果如下:
以上就是关于用C语言编个程序,求π(派)全部的内容,包括:用C语言编个程序,求π(派)、C语言近似求PI,急!!!、C语言编程用公式法求π,应该怎么做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)