如何让Sympy识别矩阵代数恒等式并输出True?
让Sympy识别矩阵代数恒等式的方法
Sympy直接使用==比较符号矩阵表达式时,不会自动执行代数化简操作,因此无法直接识别I - A@(A+I).inv() == (A+I).inv()这类恒等式。需要通过手动化简表达式后再进行相等性判断。
解决方案1:使用simplify函数化简后比较
通过sympy.simplify对等式两边的表达式分别化简,再验证是否相等:
from sympy import symbols, Identity, MatrixSymbol, simplify d = symbols("d") I = Identity(d) A = MatrixSymbol("A", d, d) # 定义等式两边的表达式 left_expr = I - A @ (A + I).inv() right_expr = (A + I).inv() # 化简两边表达式 simplified_left = simplify(left_expr) simplified_right = simplify(right_expr) # 输出比较结果 print(simplified_left == simplified_right) # 结果为True
解决方案2:通过等式变形验证
将原等式两边同时左乘A+I,转化为更易验证的形式:(A+I)(I - A(A+I)⁻¹) = I,直接验证该式是否成立:
from sympy import symbols, Identity, MatrixSymbol, simplify d = symbols("d") I = Identity(d) A = MatrixSymbol("A", d, d) left_expr = I - A @ (A + I).inv() # 验证左乘(A+I)后是否等于单位矩阵I print(simplify((A + I) @ left_expr) == I) # 结果为True
内容的提问来源于stack exchange,提问作者dohmatob
相关产品推荐
相关产品推荐

