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