我想在 sympy 中创建以下表达式:
M
、U
和 A^(k)
是大小为 m
的方阵。
到目前为止,我设法对给定的 p
执行此操作:
import sympy
m = sympy.symbols('m', integer=True)
p = 3
A = [sympy.MatrixSymbol('A^({})'.format(k), m, m) for k in range(p)]
M = sympy.MatrixSymbol('M', m, m)
U = sympy.MatrixSymbol('U', m, m)
expr = M*A[0]*U
for k in range(1, p):
expr += M*A[k]*U
expr
但是,我不想将 p
设置为固定数字。相反,我希望 p
成为一个符号,就像 m
一样。如何在 sympy 中实现这一点?
最佳答案
也许有更好的方法。现在,我通过将 A
定义为函数而不是列表来实现我想要的:
m, p, k = symbols('m, p, k')
M = sympy.MatrixSymbol('M', m, m)
U = sympy.MatrixSymbol('U', m, m)
class A(sympy.Function):
@classmethod
def eval(cls, k):
return sympy.MatrixSymbol('A^({})'.format(k), m, m)
sympy.Sum(M * A(k) * U, (k, 1, p))
关于python - sympy 中的矩阵列表/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36453064/