我知道建议不要使用linalg.inv
,而是在反转矩阵时使用linalg.solve
。当我遇到像Ax = b
这样的情况并且我想得到x
时,这是有道理的,但是有没有办法计算这样的东西:A - B * D^{-1} * C
不使用linalg.inv
?或者处理表达式中逆运算的最数值稳定方法是什么? 谢谢!
请不要inv
——它并不像大多数人想象的那么糟糕,但有更简单的方法:你提到了np.linalg.solve(A, b)
如何等于A^{-1} . b
,但没有要求b
是什么。您可以使用solve
来解决您的问题,A - np.dot(B, np.linalg.solve(D, C))
.
(注意,如果你正在做逐块矩阵反演,C
很可能B.transpose()
,对吧?