sympy 可以简化块矩阵表达式吗?

Can sympy simplify block matrix expressions?

考虑以下示例:(我尝试计算涉及块矩阵的矩阵乘积)

import sympy as sy

k, n = sy.symbols('k,n')
A = sy.MatrixSymbol("A", n, n)
B = sy.MatrixSymbol("B", n, k)
M = sy.BlockMatrix([[A * B, A]])
A.inverse() * M

这将输出

A^-1*Matrix([[A*B, A]])

有没有办法将 simplify/expand/cancel 变成更 reader 友好的 Matrix([[B, I]]) 形式?

是的,使用函数 block_collapse 计算块矩阵表达式直至块级别。

sy.block_collapse(A.inverse()*M)   

returns Matrix([[B, I]])