繁体   English   中英

使用Leibniz系列计算pi

[英]Calculate pi using Leibniz series

我是java的新手,我正在尝试制作一个使用带有100000次迭代的Leibniz系列计算pi的程序。 我需要定义一个方法并调用它。 当我运行程序时,我没有得到结果。 有人可以告诉我我在做什么错,并帮助我重回正轨吗?

 public class pi { public static void main(String[] args) { double pi = computePi(100000); } public static double computePi(int count) { double pi = 0; count = 100000; for(int i =0; i<count; i++) { pi = Math.pow(-1,i)/(2*i+1); } return pi; } } 

如果要将其打印到控制台,请尝试:

public static void main(String[] args)
{
     System.out.println("pi = " + calculatePi(100000)); 
}

不过,我不能说太多。

您的代码有几处错误。 首先,main中的函数调用与computePi函数的名称不匹配。 其次,在for循环中,您需要在每次迭代期间重新分配pi变量的值。 您需要做的是取所有迭代的总和。 因此,您需要保留pi的先前值并向其添加当前商。 最后,莱布尼兹求和公式返回pi / 4,而不是pi。 因此,您应该将返回值更改为pi * 4。

public static void main(String[] args)
{
     double pi = computePi(100000); 
     System.out.println(pi);
}

public static double computePi(int count) 
{
    double pi = 0;

    for(int i = 0; i < count; i++)
    {
        pi += Math.pow(-1,i)/(2*i+1);
    }
    return pi * 4;
}

最后一点:传递参数时,不一定需要将其还原为变量。 只需使用参数值即可。

您的代码中存在许多问题。 首先,您不会打印函数的结果。 另外,您的实现似乎已关闭。 我想你想

public static void main(String[] args) {
    double pi = computePi(100000);
    System.out.println(pi);
}

public static double computePi(int count) {
    double pi = 1;

    for (int i = 3; i < count; i += 4) {
        pi = pi - (1 / (double) i) + (1 / (double) (i + 2));
    }
    return pi * 4;
}

输出是

3.141612653189785

或者您可以使用内置的Math.PI常量,

System.out.println(Math.PI);

输出是

3.141592653589793

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM