圆周率计算算法
计算方法 一:圆等分法
主要思想是把圆等分,求多边形的周长,分的份数越多,多边形的周长则越接近圆的周长。
Y(n)^2 = 2-sqrt(4-Y(n-1)^2)
PI = 3*(2^n)*Y(n)
#include <>
#include <>
#include <>
// start from 6 edges
double PI_calc(int n)
{
int nEdge = 6;
int i = 0;
double len = 1;
double PI = 0;
int k = 3;
while(i <= n)
{
PI = k * sqrt(len);
printf("edges=%d k=%d, len=%10f, PI=%36f\n", nEdge, k, len, PI);
nEdge *= 2;
len = 2 - sqrt(4 - len);
k = k * 2;
i++;
}
return PI;
}
int main()
{
int ch;
double PI = PI_calc(18);
scanf("%c", ch);
return 0;
}
计算方法 二:级数法
PI = 2 * (1 + 1/3 + (1/3) * (2/5) + (1/3) * (2/5) * (3/7) + (1/3) * (2/5) * (3/7)*(4/9) + ........)
#include <>
double PI_calc(int n)
{
int i = 0;
double k = 0;
double y = 1.0;
double PI = 0;
double m = 1.0;
while (i <= n)
{
PI = 2 * y;
printf("i=%d, y=%f PI=%f\n", i, y, PI);
i++;
k++;
m = m * (k/(2*k+1));
y = m + y;
}
return PI;
}
int main()
{
char ch;
PI_calc(50);
scanf("%c", ch);
return 0;
}