首页 > 解决方案 > 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]会引发异常。

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

标签: pythonsympy

解决方案


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都不是符号而是整数。


推荐阅读