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]])
考虑以下示例:(我尝试计算涉及块矩阵的矩阵乘积)
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]])