Hi luc,
Thanks for the reply.
The structures I’m trying to analyze are symmetric in shape, so, it is common to have eigenvalues with very similar values (tipically equal in pairs).
I understand this is not a good condition for thishipparchus eigendecomposition, isnt’it?
Unfortunately I need both Eigenvalues and Eigenvectors so, there are not many shortcuts I think…
Regarding the failure itself, I think the solver fails during the decomposition to Schur form, but for clarity i will report the stack trace of interest here below:
Exception in thread "main" org.hipparchus.exception.MathIllegalStateException: convergence failed
at org.hipparchus.linear.SchurTransformer.transform(SchurTransformer.java:225)
at org.hipparchus.linear.SchurTransformer.<init>(SchurTransformer.java:100)
at org.hipparchus.linear.EigenDecompositionNonSymmetric.transformToSchur(EigenDecompositionNonSymmetric.java:269)
at org.hipparchus.linear.EigenDecompositionNonSymmetric.<init>(EigenDecompositionNonSymmetric.java:123)
at org.hipparchus.linear.EigenDecompositionNonSymmetric.<init>(EigenDecompositionNonSymmetric.java:110)
Finally, the matrices I work with are often non-symmetric. I assume that OrderedComplexEigenDecomposition class is akin to EigenDecompositionSymmetric class, which is not suitable to decompose non-symmetric matrices.
If there are alternative ways, please let me know.
In the worst case where there would be no solution to my problem, please indicate me which classes can exctract only the eigenvalues from the matrix to be solved.
Many Thanks.
Umberto
EDIT:
Just tested and it is very strange, maybe it can help troubleshooting why the Schur transform fail to achieve convergence:
bar decomposed in 22 nodes/21 elements of 1.25 m length. In this configuration, Shur transform convergence is achieved immediately, with the default epsilon, and result is:
- First Eigenvalue = 15.284867915214772
- Second Eigenvalue = 15.284932285755787
If one more node and thus one more element is added to the bar (23 nodes/22 elements now), maintaining the total bar length to 1.25 m, the Schur decomposer fail to achieve convergence.
EDIT 2:
Another little update: I tried to use the class ComplexEigenDecomposition and this is the failure stack trace:
Exception in thread "main" org.hipparchus.exception.MathRuntimeException: failed decomposition of a 54x54 matrix
at org.hipparchus.linear.ComplexEigenDecomposition.checkDefinition(ComplexEigenDecomposition.java:456)
at org.hipparchus.linear.ComplexEigenDecomposition.<init>(ComplexEigenDecomposition.java:167)
Which seems to be a failure due to the last check of the ComplexEigenDecomposition constructor, that verify if AV = VD…