Jutho / KrylovKit.jl

Krylov methods for linear problems, eigenvalues, singular values and matrix functions
Other
284 stars 37 forks source link

Get right and left eigenvector #17

Closed matthieugomez closed 5 years ago

matthieugomez commented 5 years ago

I am using KrylovKit to solve for the eigenvalue with the largest real part, as well as its left and right eigenvectors Is there a way for KrylovKit.eigsolve to return both the left and right eigenvector? For now I call eigsolve twice, one time on the matrix and the second time time on its transpose, but there must be a better way.

Jutho commented 5 years ago

Standard iterative algorithms like Arnoldi and Krylov Schur only produce a basis for the right eigenvectors (actually Schur vectors), they try to create an approximate Schur factorization: A * U = U *T + correction where U is unitary and T upper triangular. From this, only the right eigenvectors can be recovered.

There is an algorithm that simultaneously construct a left and right basis (biorthonormal), namely bilanczos. However, I think it is typically less stable, and anyway requires equally many applications with both A and A^T, so it won't be much cheaper than running the standard algorithms twice. Bi-lanczos is not implemented (yet?).

matthieugomez commented 5 years ago

I see. Interesting! Thanks a lot for your answer.

Jutho commented 5 years ago

Can this be closed, or should this remain open as a feature request for Bi-Lanczos methods?