gpt4 book ai didi

java - 用 Java 编写一个程序来估计 PI (π) 使用 Leibniz 级数

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:27 26 4
gpt4 key购买 nike

我在网上看了几个小时,想看看我是否能找到解决方案,虽然我已经找到了很多解决方案,但我教授的指示如下:

Write a program to estimate PI (π) using the following series. This problem is also described in the text as problem 5.25 at the end of chapter 5. If you are unfamiliar with series, problem 5.24 is a single pass through a series and the solution is posted in the Homework 3 course module.
π=4*(1-1/3+1/5-1/7+1/9-1/11+⋯〖-1〗^(i+1)/(2i-1)) Obviously, there is no user input for this problem so a modified worksheet is provided. You will to write a program that computes PI using i values of 10,000 to 100,000 in increments of 10000. Your output should look like: (Hint: Placing “/t” in the System.out.println between the values of i and PI will give you columns. This is the tab character).

我________PI

10000____3.xxxxx

20000____3.xxxx

30000____3.xxxx

You will need multiple loops to do this. The outer loop will increment i. The inner loop will compute the series from 1 to i. You may use any of the three types of loops, for, while, or do-while to do this.

现在我很清楚除此之外还有很多方法可以更好地找到 pi,但是这个作业的重点不是有效地找到 Pi,而是练习循环。然而,我尝试了多种方法,但所有方法要么返回无限循环、不正确的输出,要么就是无法编译。

编辑:感谢 Martijn Courteaux,我对代码进行了巨大改进。但是我似乎仍然无法正确增加计数。有什么建议么?我最近的尝试如下。

公共(public)课莱布尼茨公式{ public static void main(String[] args) {

 System.out.println("i/t Pi");
int count = 10000;
double pi = 0;
double denominator = 1;
while(count < 100000){
for (int x = 0; x < count; x++) {

if (x % 2 == 0) {
pi = pi + (1 / denominator);
}
else {
pi = pi - (1 / denominator);
}
denominator = denominator + 2;
}
pi = pi * 4;
System.out.println(pi);
count = count + 10000;
System.out.println(count);
}
}
}

现在的结果是:

i/t Pi
3.1414926535900345
20000
12.566037281026608
30000
50.264165790773355
40000
201.05666982975973
50000
804.2266826523694
60000
3216.9067325142446
70000
12867.626931247545
80000
51470.50772578291
90000
205882.03090368543
100000

我真的不明白为什么当我硬编码“计数”的值时程序可以工作,但在增加它时却不能。我知道我听起来很乏味,但我真的很想了解出了什么问题以及为什么会出错。

我意识到将解决方案简单地张贴在这里不是好的形式,所以我不是要求这样做,我可能只需要一些伪代码或指针。我已经为此工作了很长一段时间。谢谢

最佳答案

有更高效和简洁的方法来编写这个程序,但最简单的解决方法是去掉 pi = pi * 4 ,因为 while 循环的下一次迭代将具有更大的值 pi开始。相反,只需打印出 pi * 4而不仅仅是 pi .

此外,这可能无关紧要,但实际上您提供的精度超出了需要;例如,对于 count = 20000精度实际上是count = 30000应该。你的内部 for 循环有 x < count , 自 count每次迭代后增加 10000,您实际上获得了 10000、30000、60000 等精度。您可以通过重新初始化 denominator 的值来解决此问题。和 pi每次迭代,或更改 x < countx < 10000 .

关于java - 用 Java 编写一个程序来估计 PI (π) 使用 Leibniz 级数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26455210/

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