如何在python中以数字方式执行无限求和

ele*_*ora 3 python math

我的数学编程正在从 Maple 转移到 python。作为其中的一部分,我试图找出以数字方式执行无限求和的正确工具。

我想以数值方式计算,例如:

sum(exp(-x^2), x = -infinity..infinity)

在 Maple 中,这只是

evalf(sum(exp(-x^2), x = -infinity..infinity));

                             1.772637205
Run Code Online (Sandbox Code Playgroud)

你能在 python 中做类似的事情,也许使用科学的 python 生态系统(scipy、numpy、sympy 等)?

DSM*_*DSM 6

我过去曾为此使用过 mpmath nsum,效果很好:

>>> from mpmath import nsum, exp, inf
>>> nsum(lambda x: exp(-x**2), [-inf, inf])
mpf('1.7726372048266521')
Run Code Online (Sandbox Code Playgroud)

这与

>>> from mpmath import quad
>>> quad(lambda x: exp(-x**2), [-inf, inf])
mpf('1.7724538509055161')
Run Code Online (Sandbox Code Playgroud)

我们可以得到更高的精度,并将其与解析值进行比较:

>>> import mpmath
>>> mpmath.mp.dps = 50
>>> nsum(lambda x: exp(-x**2), [-inf, inf])
mpf('1.7726372048266521530312505511578584813433860453722459')
>>> mpmath.jtheta(3, 0, 1/exp(1))
mpf('1.7726372048266521530312505511578584813433860453722465')
Run Code Online (Sandbox Code Playgroud)