gpt4 book ai didi

java - Chudnovsky算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:43:46 26 4
gpt4 key购买 nike

我试图制作一个程序(用 Java)用 Chudnovsky 算法计算 pi 但它的输出是 NaN(不是数字)。请帮助我找出代码中的错误,或改进我的代码。 (我没有太多的Java编程知识)

您可以在这里找到 Chudnovsky 的算法:

https://en.wikipedia.org/wiki/Chudnovsky_algorithm

这是我的代码:

package main;

public class Class1 {

public static void main(String[] args)
{
double nr1=0,nr2=0,nr3=0,pi=0;
int fo1=1, fo2=1, fo3=1;

for(int i=0; i<=20; i++){

for(int fl1=1; fl1<=(6*i); fl1++){fo1 = fo1 * fl1;}
for(int fl2=1; fl2<=(3*i); fl2++){fo2 = fo2 * fl2;}
for(int fl3=1; fl3<=(i); fl3++){fo3 = fo3 * fl3;}

nr1 = ( (Math.pow(-1, i)) * (fo1) * ((545140134*i) + 13591409) );
nr2 = ( (fo2) * (Math.pow(fo3, i)) * ( Math.pow(Math.pow(640320, 3), (i+(1/2)) )) );
nr3 = 12 * (nr1/nr2);

}

pi = 1/nr3;
System.out.println((Math.PI));
System.out.println(pi);
}
}

最佳答案

这里有很多问题。

  • 正如安迪所说,1/2 不是 0.5。
  • 您正在使用整数来计算 120 之类的东西!这完全超出了任何原始类型的范围。
  • f01,f02,f03 应该在每个循环中初始化,否则它们会变得更大

修复它并非易事。你可以看看 Error calculating pi using the Chudnovsky algorithm - Javahttp://www.craig-wood.com/nick/articles/pi-chudnovsky/一些提示,但不要指望内置原始类型可以使用该算法。

关于java - Chudnovsky算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com