Java - 用于pi的Ramanujan系列

时间:2014-02-06 10:55:55

标签: java math pi

对于我的计算机科学课程中的一个程序,我必须使用以下公式计算pi的值,我在java中遇到数学方程式问题。

这是数学公式: Formula for 1/pi

我使用的公式是:

for (int i = 0; i < k; i++) 
{
   term = ((calculate(4*i)*(1103+(26390*i)))/(Math.pow(calculate(i), 4))*Math.pow(396, (4*i)));
   sum += term;
}
sum *= ((2*Math.sqrt(2))/9801);
sum = Math.pow(sum, -1);

for循环应该计算sigma符号及其右边的所有内容。 下一部分应该将该数字乘以2平方根2乘以9801,最后部分应该将该数字乘以-1次幂,因为等式找到1 / pi,这应该使分数反复。

计算方法只是找到一个数字的阶乘。

当我运行该程序时,最终的答案正好是pi在1,213355575437204093E-13,2,并且它一直打印错误的数字。知道为什么这会给出错误的答案吗?

谢谢,感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

你的分母错了你的括号:

term = (double)(calculate(4*i)*(1103+(26390*i)))/((Math.pow(calculate(i), 4))*Math.pow(396, (4*i)));

尝试使用双打进行计算。如果值为k = 30,则结果为3.141592653589793

确定PI的价值就像应用随机指标来找到确定性值一样,使用大迭代可以提供更好的精度