我想使用符合以下条件的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
。
答案 0 :(得分:1)
您的check isInvertible应该在这里工作。对于诊断,您可以检查行列式的绝对值或矩阵的条件号。您应该能够使用行列式成员函数,请参阅:https://eigen.tuxfamily.org/dox/classEigen_1_1MatrixBase.html#a7ad8f77004bb956b603bb43fd2e3c061