使用计算π的无穷级数前5项求近似值的Python代码结果不符求助
π级数计算代码问题排查与修复
问题定位
- 核心错误:原代码仅在初始化时计算了一次附加项
x的数值,后续循环中仅翻转了x的符号,没有根据更新后的分母重新计算项值,导致所有附加项的绝对值固定为4/(2*3*4),完全不符合级数的表达式要求。 - 次要问题:原代码更新
a、b、c的逻辑虽然可以得到正确的分母三元组,但和项值计算的顺序不匹配,没有用到新的三元组计算对应项。
正确实现
以下代码按附加项取前5项计算(即累加级数中3之后的5个项,符合仅用前五项的需求):
a, b, c = 2, 3, 4 pi = 3 sign = 1 for _ in range(5): pi += sign * 4 / (a * b * c) # 更新下一组分母 a, b, c = c, c + 1, c + 2 # 翻转下一项的符号 sign *= -1 print(pi)
运行后输出结果约为3.1427,和理论计算的近似值一致。
如果你是将初始的3作为级数第一项,只需将循环次数改为range(4)即可,得到的结果约为3.1397。
内容的提问来源于stack exchange,提问作者Zy Taga
相关产品推荐
相关产品推荐

