特征矩阵右等分

时间:2016-12-10 15:35:47

标签: c++ eigen

如果我写的话,在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)
<?>在Eigen?

1 个答案:

答案 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将以最有效的方式对此进行评估。