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

Eigen: How to check if Matrix is invertible

我想使用 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

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