本征:如何检查矩阵是否可逆

时间:2019-04-16 15:38:31

标签: c++ matrix eigen eigen3

我想使用符合以下条件的Eigen生成一个随机可逆矩阵:

Eigen::Matrix<T,Eigen::Dynamic, Eigen::Dynamic> res(M,N+1);
Eigen::Matrix<T,Eigen::Dynamic, Eigen::Dynamic> y(M,1); y.setRandom();
while(true){
        res.setRandom();
        Eigen::FullPivLU<Eigen::Matrix<T, Eigen::Dynamic, Eigen::Dynamic>> lu(res.transpose()*res);
        if(lu.isInvertible()){
            break;
        }
}

所以res^T*res应该是可逆的,但是我需要一个随机的res

1 个答案:

答案 0 :(得分:1)

您的check isInvertible应该在这里工作。对于诊断,您可以检查行列式的绝对值或矩阵的条件号。您应该能够使用行列式成员函数,请参阅:https://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html#a7ad8f77004bb956b603bb43fd2e3c061