所以我在代码块中使用Eigen for C++来计算我的矩阵的特征值.处理此问题的代码的具体部分如下: -
EigenSolver<MatrixXd> b(B,false);
cout<<" Eigen values are: \n "<<b.eigenvalues()<<"\n";
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,为我的矩阵B计算的特征值之一与我在calculator.vhex.net上找到的实际特征值无关.
例如,对于矩阵
1 0 0 x
0 1 x 0
0 x 1 y
x 0 y 1
其中x = -1/sqrt(2)且y = -0.5,特征值为0,0.5,1.5和2.
但是,我的代码将它们计算为-4.25e-016,0.5,1.5和2.
我也试过5x5矩阵,它应该有一个特征值4e-06,但代码计算为1.4413e-017.
这可能是什么原因?它们是近似值吗?我的猜测是内存问题,2的平方根的双重类型值不会完全等于2的平方根,但我不确定这一点.
什么可以解决这个问题?