本征:如何检查矩阵是否可逆
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
我想使用 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