Wallis方程的Python代码

2024-10-02 18:17:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我被要求为Wallis方程编写一个Python代码,我编写了以下代码,但是输出始终是0.0,我不知道为什么或者什么原因导致输出为0.0。 我也在用3.x版本。在

n = 1000 # The number of terms to compute
pi = 0.0

for i in range(n):
  denom1 = i * 2 + 1
  denom2 = i * 2 - 1
  pi = pi * (i * 4.0)/(denom1 * denom2)
print(pi)

Tags: oftheto代码版本numberforpi
3条回答

数学错误: pi=0.0 然后乘以变量pi*(i*4.0)/(denom1*denom2) 所以你基本上就是把方程乘以0

如果你试图计算pi,你的公式是不正确的(例如,当i=0时会发生什么?)在

下面是一个有效的实现:

n = 1000 # The number of terms to compute
halfpi = 1.0

for i in range(1, n):
  numer = i * 2
  denom = i * 2 - 1
  halfpi = halfpi * (numer * numer) / (denom * (denom + 2))
print(2 * halfpi)

您的实现中有一些错误。我们这里不给家庭作业答案,但我可以帮你找到正确的问题。 (1) 一个连续的和从0开始;一个连续的乘积从1开始。这是你一直得0分的主要原因。 (2) 循环边界不正确;请仔细验证。 (3) 你的等式在一个方面是错误的。在

然而,我可以给你一个有用的调试技巧:当你有一个病人的时候,问问它哪里痛:打印出中间值。在这种情况下,请尝试将以下行放在循环的底部:

factor = i * 4.0 / (denom1 * denom2)
print i, denom1, denom2, factor

相关问题 更多 >