基于c语⾔的拉马努⾦法计算圆周率近似值基于c语⾔的拉马努⾦法计算圆周率近似值
拉马努⾦法计算圆周率近似值:
“数学家拉马努⾦(Srinivasa Ramanujan)到了⼀个⽆限序列,可以⽤来⽣成π的数值近似值:
1、c语⾔中的带根号的表⽰:
采⽤库函数sqrt()进⾏处理,sqrt(2)就是根号2的表⽰;
2、c语⾔中的幂指数表⽰:
采⽤库函数pow(a,b); pow(396,4*k)就是396的4k次幂的表⽰;
3、库函数头⽂件:#include <math.h>
#include<stdio.h>
#include <math.h>
//阶乘函数,递归求阶乘
int fun(double n)
{
double result;
if(n<=1)c语言用递归函数求n的阶乘
{
result = 1;
}
else{
result = n*fun(n-1);
}
return result; //保证函数只有⼀个出⼝
}
//主函数
void main()
{
double sum=0,k=0,cs,fz,fm,t;
cs = (2*sqrt(2))/9801;
while(1)
{
fz = (26390*k + 1103)*fun(4*k); //求和项分⼦
fm = (pow(396,4*k))*(pow(fun(k),4)) ; //求和项分母
t = cs*fz/fm;
sum += t;
if(t<1e-15) break; //最后⼀项⼩于10^(-15)时跳出循环
k+=1;
}
printf("pi的值为%.*f",15,1/sum);
}
运⾏结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论