-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
failing test cases #116
Comments
In the meanwhile I have the impression, that the algorithm for skew symmetric real tridiagonal matrices is not reliable enough for production use. I propose to fall back to the proven algorithms for tridiagonal symmetric matrices, even if they do not exploit the inverse signed eigenvalues, which appear with a zero diagonal.
|
At the beginning, this package was using the technic described in https://pure.mpg.de/rest/items/item_3181584/component/file_3309065/content to solve antisymmetric eigenvalue problems. But it appeared that symmetric tridiagonal eigensolver from LAPACK itself could encounter issues with LAPACKException(22). Therefore came up the idea at the end of my internship in august to implement a specialized algorithm for skew-symmetric matrices that would be able to solve problems that LAPACK could not (not a little challenge). For this QR algorithm, zeros are indeed difficult to handle, the main reason being that these eigenvalues do not appear by pairs during the iterations. However, for dense matrices, the performances obtained are quite nice as it can be faster than the symmetric solver as long as the non-availability of a skew-symmetric matrix-vector product for the hessenberg reduction does not become a too large disadvantage. I have only had 1 week to really work on that eigensolver, reason for which some caveats may remain for very particular cases. I think it is worthwhile to try to make it work for these difficult cases, although it is not easy. Meanwhile, the question I am asking myself is that this eigensolver was more intended to solve dense skew-symmetric eigenvalue problems, for which it is much more robust since the caveats existing for special tridiagonal cases have a very little probability to appear. So if the efforts invested don't solve all issues with tridiagonal matrices, maybe it is worth mentioning it in the documentation and live with that caveat since tridiagonal skew-symmetric matrices don't appear by themselves that much in practice. The other possibility is to come back to the method proposed in the paper above, but caveats will remain anyway with #64. |
While it might be acceptable, that the algorithm diverges for some "corner cases" it is not acceptable, that it converges to false results. The second example above is such a case. It has no zeros in the subdiagonal. |
I could not agree more with you, reason for which I will use my next free time to find what creates these issues. |
#117 solves the main problem of handling zeros. I stopped trying to make zeros appear in pairs. Eigenvectors are in consequence a bit more complicated to build. For the case A pathological problem of the double shift QR algorithm remains: if several zeros are consecutive in the middle of the matrix, the bulge disappears and the second part of the matrix is not updated. This should be tackled by performing classical iterations at some occasions. |
I close this issue since the remaining problem is not the same anymore. |
I prepared some (further simple) test cases, which should all succeed - but ...
some work remaining. The failing cases are now all related to eigenvalues of
0
and zeros in the sub-diagonal.It would be good to insert them into
runtests.jl
The text was updated successfully, but these errors were encountered: