如何简化SymPy中的矩阵表达式?

sar*_*119 12 python symbolic-math sympy

请考虑以下示例

import sympy as sy
n = sy.symbols('n')
A = sy.MatrixSymbol("A",n,n)
B = sy.MatrixSymbol("B",n,n)
C = sy.MatrixSymbol("C",n,n)
M = A.inverse()*B.inverse() - A.inverse()*C*B.inverse()
B.inverse()*M.inverse()*A.inverse()
Run Code Online (Sandbox Code Playgroud)

打印出来的例子B^-1*(A^-1*B^-1 - A^-1*C*B^-1)^-1*A^-1.

SymPy可以简化表达式(I-C)^-1吗?如果没有,那么任何中间结果如何收集共同因素M

Zar*_*chi 1

解决此问题的方法是在表达式上使用字符串转换:

\n\n
from sympy import *\n\nn = symbols(\'n\')\nA = MatrixSymbol("A",n,n)\nB = MatrixSymbol("B",n,n)\nC = MatrixSymbol("C",n,n)\nM = A.inverse()*B.inverse() - A.inverse()*C*B.inverse()\nexpression = B.inverse()*M.inverse()*A.inverse()\n\n# convert expression to string then simplify\nsimplify_expression = simplify(str(expression))\n\npprint(simplify_expression)\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
 -1  \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\nC - 1\n
Run Code Online (Sandbox Code Playgroud)\n