[
https://issues.apache.org/jira/browse/MATH-1045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13809009#comment-13809009
]
Sean Owen commented on MATH-1045:
---------------------------------
Yes, this is a good point. It's safest to find the largest eigenvalue (by
absolute value) with a loop I think.
The final matrix in testUnsymmetric(), which is unsymmetric, shows this.
The symmetric matrix in testSquareRootNonPositiveDefinite() also shows this --
the last eigenvalue is the most negative, but is the largest in absolute value.
> EigenDecomposition.Solver should consider tiny values 0 for purposes of
> determining singularity
> -----------------------------------------------------------------------------------------------
>
> Key: MATH-1045
> URL: https://issues.apache.org/jira/browse/MATH-1045
> Project: Commons Math
> Issue Type: Bug
> Affects Versions: 3.2
> Reporter: Sean Owen
> Priority: Minor
> Labels: eigenvalue, singular
> Fix For: 3.3
>
> Attachments: MATH-1045.patch, MATH-1045.patch
>
>
> EigenDecomposition.Solver tests for singularity by comparing eigenvalues to 0
> for exact equality. Elsewhere in the class and in the code, of course, very
> small values are considered 0. This causes the solver to consider some
> singular matrices as non-singular.
> The patch here includes a test as well showing the behavior -- the matrix is
> clearly singular but isn't considered as such since one eigenvalue are ~1e-14
> rather than exactly 0.
> (What I am not sure of is whether we should really be evaluating the *norm*
> of the imaginary eigenvalues rather than real/imag components separately. But
> the javadoc says the solver only supports real eigenvalues anyhow, so it's
> kind of moot since imag=0 for all eigenvalues.)
--
This message was sent by Atlassian JIRA
(v6.1#6144)