SymPy:列表中符号求和的表达式

zky*_*ony 1 python sympy

我正在编写一个计算幂级数的程序sum_{m=0}{oo} a[m]x^m,其中a[m]递归定义:a[m]=f(a[m-1])。我生成符号如下:

a = list(sympy.symbols(' '.join([('a%d' % i) for i in range(10)])))
for i in range(1, LIMIT):
   a[i] = f_recur(a[i-1], i-1)
Run Code Online (Sandbox Code Playgroud)

a0,a1,...,a9这让我可以使用来引用符号a[0],a[1],...,a[9],并且是由 给出的a[m]函数。a[m-1]f_recur

现在,我希望将求和代码编写如下:

m, x, y = sympy.symbols('m x y')
y = sympy.Sum(a[m]*x**m, (m, 0, 10))
Run Code Online (Sandbox Code Playgroud)

但是,m不是整数,因此a[m]会引发异常。

在这种情况下,符号存储在列表中,您将如何对求和进行编码?谢谢你的帮助!

小智 5

SymPy被设计为带有符号Sum索引的总和。你想要一个具体索引为 0, ... 9 的总和。这可能是 Python 的sum

y = sum([a[m]*x**m for m in range(10)])
Run Code Online (Sandbox Code Playgroud)

或者,从性能的角度来看哪个更可取(相关问题

y = sympy.Add(*[a[m]*x**m for m in range(10)])
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,m都不是符号而是整数。