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)
这让我可以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))
但是,m
不是整数,因此a[m]
会引发异常。
在这种情况下,符号存储在列表中,您将如何编码求和?谢谢你的帮助!
解决方案
SymPySum
被设计为带有符号索引的总和。你想要一个总和,具体索引贯穿 0, ... 9。这可能是 Python 的sum
y = sum([a[m]*x**m for m in range(10)])
或者,从性能的角度来看,这是更可取的(相关问题)
y = sympy.Add(*[a[m]*x**m for m in range(10)])
在任何一种情况下,m
都不是符号而是整数。