Python中的无限级数

6 投票
6 回答
22658 浏览
提问于 2025-04-17 02:06

我听说Python可以计算无限和。比如说,如果我想计算这个无限和:

1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...

我该怎么做呢?我对Python还很陌生,所以如果有人能把完整的代码写出来,并告诉我是否需要导入什么,那就太好了。

举个例子,在Wolfram Alpha上,如果我输入 Summation (-1)^(n-1)/(2*n-1) from n=1 to infinity,它会给出答案 0.785395。我想要计算出一个精确度,比如说像Wolfram Alpha那样,精确到6位数字。

另外,我看了这个帖子 这里,试着模仿一下,但出现了以下错误:

`NameError: name 'Infinity' is not defined`
`NameError: name 'Inf' is not defined`

谢谢,

Adhvaitha

6 个回答

5

这里有点像是在瞎猜……我敢打赌,当你听说Python可以处理无限求和时,他们指的是Python中的长整型数字是无限精度的

显然,这和求和无限级数没有关系。

我不知道Python有什么特别的地方能让它特别适合计算这种求和(或者说判断一个求和是否收敛)。

你可以尝试直接把项加起来,设定一个合理的停止条件。不过,这种方法只适用于表现良好的级数。

最后,给你一点关于你所问问题复杂性的感觉,有些学术论文专门讨论某些小类级数的求和。你提出的这个一般性问题并没有看起来那么简单。

5

Python里的整数可以非常大,几乎没有限制,但浮点数的精度是有限的。不过,有一些工具包可以帮助你实现更高的浮点数精度。

而且,没有什么方法可以“完成”一个无限的总和,因为这需要进行无限多的步骤。你需要找到一个简单的公式来表示这个总和,然后去计算它,或者接受一个近似值,也就是在达到一定精度时停止计算这个无限的总和。

8

虽然这个系列是有限的,但你可以使用 fractionsdecimal 这两个模块来进行近似计算:

from fractions import Fraction
from decimal import Decimal

repetitions = 100

d = 1
r = Fraction(1, d)

for n in range(repetitions):
    r += Fraction(1, d) - Fraction(1, d + 2)
    d += 4

print(Decimal(r.numerator)/Decimal(r.denominator))

我觉得这个方法最接近你想要做的事情。

撰写回答