【发布时间】:2016-12-10 15:35:47
【问题描述】:
如果我在 Matlab 中编写
A = B*inv(C)
(A、B 和 C 是方阵),我收到警告说矩阵求逆应该替换为矩阵“右除法”(因为在数值上更稳定和准确),例如
A = B/C
在我的 Eigen C++ 项目中,我有以下代码:
Eigen::Matrix<double> A = B*(C.inverse());
如果在 Eigen 中采用类似于上面提到的 Matlab 中的矩阵求逆的等效替代品,我会感到很困惑?
我知道矩阵“左除”可以通过求解方程组来表示,例如
A = inv(C)*B
但是呢
A = C*inv(B)
在本征中?
【问题讨论】:
-
您可以转置所有内容以得到相同的形式。不过,不确定它是否会比计算倒数更高效。
-
对大矩阵取逆是求解
AxC=B或CxA=B矩阵方程的低效方法。