Open afossa opened 1 year ago
I am not sure we can improve this. The problem is not related to the eigenvalues themselves, but rather to the the ratio between the smallest and largest eigenvalues which is about 8.4e16. Scaling the matrix up by 1e10 and the eigenvalues down by 1e10 and setting the epsilon to 1e-20 helped slightly as it allowed to get the fifth eigenvalue, by the last one was still missing. The matrix is ill-conditioned.
The eigen-decomposition of symmetric, positive definite matrices should return real and strictly positive eigenvalues.
However, if the matrix has (very?) small entries, some eigenvalues are rounded to
0.0
, even after settingepsilon=0.0
in theEigenDecomposition
class constructor. This is in contrast with the results provided by implementations such asMatrix.EVD
in SMILE oreig
in MATLAB which correctly return positive eigenvalues.Example with a
6x6
matrix:I attach the code snippet, input matrix and MATLAB output with which I generated the above numbers. eigen-issue.zip