对于我的计算机科学课程中的一个程序,我必须使用以下公式计算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,并且它一直打印错误的数字。知道为什么这会给出错误的答案吗?
谢谢,感谢任何帮助!
答案 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的价值就像应用随机指标来找到确定性值一样,使用大迭代可以提供更好的精度