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)
<?>在Eigen?
答案 0 :(得分:2)
目前,最有效的方法是将等式重写为
A^T = inv(C^T) * B^T
A = (inv(C^T) * B^T)^T
可以在Eigen中实现
SomeDecomposition decompC(C); // decompose C with a suiting decomposition
Eigen::MatrixXd A = decompC.transpose().solve(B.transpose()).transpose();
有were/are plans,最终可以写
A = B * decompC.inverse();
和Eigen将以最有效的方式对此进行评估。