使用 linalg.solve 计算条件协方差矩阵的数值稳定方法

Numerically stable way to compute conditional covariance matrix using linalg.solve

我知道建议不要用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(),对吗?)