You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 setting epsilon=0.0 in the EigenDecomposition class constructor. This is in contrast with the results provided by implementations such as Matrix.EVD in SMILE or eig in MATLAB which correctly return positive eigenvalues.
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
The text was updated successfully, but these errors were encountered: