我有一个形式的表达式(在LaTeX语法中):
\sum_{k=0}^{K-1} a_k = 0
a_k
是“下标k”,我正在建立一个线性方程组的变量列表之一。我希望能够在紧凑的情况下将这个方程式表达为SymPy。一种尽可能的方式。好像我想用Sum()
函数来表示求和,但我不知道如何告诉它on term k in the sum, a_k refers to the k-th symbol
。
这是否可行,例如,如果我设置这样的符号列表?
a = [sympy.symbols('a' + str(i)) for i in xrange(K)]
答案 0 :(得分:5)
你的意思是这样吗?
In [1]: a = IndexedBase("a")
In [2]: Sum(a[k], (k, 0, K-1))
Out[2]:
K - 1
___
╲
╲ a[k]
╱
╱
‾‾‾
k = 0
IndexedBase
应该创建一个需要在每次使用时指定索引的变量。如果指数不同,则应将变量视为不同(例如a[k]
与a[j]
)。
如果您的总和已知限制(即非文字),您可以展开它:
In [3]: Sum(a[k], (k, 0, 10))
Out[3]:
10
___
╲
╲ a[k]
╱
╱
‾‾‾
k = 0
In [4]: Sum(a[k], (k, 0, 10)).doit()
Out[4]: a[0] + a[1] + a[2] + a[3] + a[4] + a[5] + a[6] + a[7] + a[8] + a[9] + a[10]
不幸的是,并非SymPy的所有算法都完全支持IndexedBase
个对象。在这种情况下,建议用Symbol
替换。