Jacobi eigenvalue algorithm #461
Labels
No Label
bug
dependencies
discussion
documentation
duplicate
feature
good first issue
misc
performance
question
test
use case
wontfix
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: kscience/kmath#461
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "kylchik/jacobi"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Instead of using the SVD to compute the eigendecomposition of a real symmetric matrix, I implemented the Jacobi's method.
Tested correctness of algorithm with
space.kscience.kmath.tensors.core.TestDoubleLinearOpsTensorAlgebra
test. Not sure about performance, it require further investigation. Maybe it is worth to implement cyclic Jacobi algorithm.@ivandev0 you might want to have a look at this implementation: https://github.com/mipt-npm-study/numerics-2021/blob/master/jacobi.cc , some notes are available in the notebook https://github.com/mipt-npm-study/numerics-2021/blob/master/seminar5.ipynb and I relied on the classcial algorithm from http://numerical.recipes/
Changed the base to not affect
master
again.So, I fixed it. In my opinion It is harder to read current code, but it is 10x faster than SVD :)
This last commit is not about Jacobi algorithm but mostly an addition to my previous PR. I figured out that
tensor
andmatrix
are kind of the same type and dispatch to realdot
depends on used algebra (please fix me if I am wrong). So I dropped duplicate test that I added.