python - sympy 中的矩阵列表/数组

标签 python sympy

我想在 sympy 中创建以下表达式:

\sum_{k=0}^p \mathbf{M}\mathbf{A}^{(k)}\mathbf{U}

MUA^(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

enter image description here

但是,我不想将 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/

相关文章:

python - Python 中的 GetSetDescriptorType 是什么?

python - numpy/scipy 中的平方差和 (SSD)

python - 如何使用 SymPy 找到给定一阶导数的 n 阶导数?

python - sympy错误 'Symbol'对象不可调用

python - SymPy rref() 返回奇异矩阵的单位矩阵

python - SymPy 中的模 2 算术

python - 可怜的 sympy linsolve/solve 性能

python - Pandas 在一个轴上压扁了图

python - createsuperuser 没有要求用户名

python - 使用 PyQT 伪透明