Eigen为什么不收敛于微小的常数矩阵?

时间:2019-09-19 11:16:05

标签: c++ eigen

我正在为小的复数值平方矩阵(维数<10)运行重复的矩阵对角化例程,但是在小的常数值矩阵上遇到了故障。 ComplexEigenSolver不收敛,返回空对象的特征值和特征向量。

我已经通过尝试解决所有值为1的矩阵来检查了此问题,但这很好。我的问题必须与矩阵的较小值有关。

MatrixXcd matrix(2,2);
matrix(0,0) = std::complex<double>(1.4822e-322, 0);
matrix(0,1) = std::complex<double>(1.4822e-322, 0);
matrix(1,0) = std::complex<double>(1.4822e-322, 0);
matrix(1,1) = std::complex<double>(1.4822e-322, 0);
ComplexEigenSolver<MatrixXcd> ces;
ces.compute(matrix);
ces.eigenvalues();
ces.eigenvectors();
ces.info();

这将给出空的特征值和特征向量,并从ces.info()返回2。 我希望它仅给出条目0和2.96e-322的特征值(此处给出的矩阵的缩放版本:https://en.wikipedia.org/wiki/Matrix_of_ones

值太小了吗?

0 个答案:

没有答案