Open axkr opened 2 months ago
This input:
Eigenvalues({{1,0,0,0,0},{3,1,0,0,0},{6,3,2,0,0},{10,6,3,2,0},{15,10,6,3,2}})
raises a "failed decomposition of a 5x5 matrix" exception for the OrderedComplexEigenDecomposition
implementation:
org.hipparchus.exception.MathRuntimeException: failed decomposition of a 5x5 matrix
at org.hipparchus.linear.ComplexEigenDecomposition.checkDefinition(ComplexEigenDecomposition.java:455)
at org.hipparchus.linear.ComplexEigenDecomposition.<init>(ComplexEigenDecomposition.java:167)
at org.hipparchus.linear.OrderedComplexEigenDecomposition.<init>(OrderedComplexEigenDecomposition.java:98)
at org.matheclipse.core.builtin.LinearAlgebra$Eigenvalues.realMatrixEval(LinearAlgebra.java:2204)
if I set epsilonAVVDCheck = 1e-4
I get a result.
Thereas the EigenDecompositionNonSymmetric
implementation doesn't need this adjustment:
EigenDecompositionNonSymmetric edns = new EigenDecompositionNonSymmetric(matrix);
Complex[] eigenvalues = edns.getEigenvalues();
return F.mapRange(0, eigenvalues.length, (int i) -> {
if (F.isZero(eigenvalues[i].getImaginary())) {
return F.num(eigenvalues[i].getReal());
}
return F.complexNum(eigenvalues[i].getReal(), eigenvalues[i].getImaginary());
});
returns the result:
{2.00008+I*0.000132429,2.00008+I*(-0.000132429),1.99985,1.0,1.0}
I confirm the problem. Already worked a few hours on it. I am still invetigating.
The
EigenDecompositionNonSymmetric
implementation returns a result without an exception.Can the exception
org.hipparchus.exception.MathIllegalArgumentException: matrix is singular
also be avoided for the "Complex implementations"ComplexEigenDecomposition
andOrderedComplexEigenDecomposition
?See: