Lanczos Method: Calculating Smallest Eigenvalues

  • Context: Graduate 
  • Thread starter Thread starter Hassan2
  • Start date Start date
  • Tags Tags
    Method
Click For Summary

Discussion Overview

The discussion focuses on the Lanczos method for calculating the smallest eigenvalues of matrices, exploring its implementation and challenges. Participants share experiences with the method, compare it to the subspace iteration method, and address issues related to numerical stability and orthogonality.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant notes that while the Lanczos method is simpler than the subspace iteration method, it typically yields the largest eigenvalues, prompting a request for references on obtaining the smallest eigenvalues.
  • Another participant suggests finding the eigenvalues of the inverse of the matrix, explaining that the eigenvectors remain the same and outlining a method involving factorization of the matrix.
  • A participant reports issues with obtaining multiple instances of the same eigenvalue, attributing this to potential deviations from orthogonality or numerical errors in the iterative solver used.
  • One participant warns about the complexities of writing a reliable Lanczos routine, sharing their own frustrations with achieving consistent results over time and suggesting that the literature offers various potential fixes that may not universally apply.
  • A later reply expresses a sentiment of considering abandoning the Lanczos method in favor of the subspace iteration method, indicating a lack of confidence in resolving the encountered issues.

Areas of Agreement / Disagreement

Participants express differing views on the effectiveness and reliability of the Lanczos method for calculating smallest eigenvalues, with some suggesting alternative approaches and others sharing frustrations with the method's challenges. No consensus is reached regarding the best approach.

Contextual Notes

Participants mention potential limitations related to numerical stability, orthogonality, and the applicability of various fixes found in the literature, which remain unresolved in the discussion.

Hassan2
Messages
422
Reaction score
5
Having done with subspace iteration method, I think now I can understand and implement the Lanczos method. In fact the lanczos algorithm is simpler than the subspace, but it seems to me that the common Lanczos algorithms give the largest eigenvalues rather than smalles ones. That being true, does anyone have a reference for the case of calculating smallest eigenvalues?

Your help would be highly appreciated.
 
Physics news on Phys.org
Just find the eignenvalues of the inverse of the matrix. The eigenvectors of the matrix and its inverse are the same.

You don't invert the matrix explicitly. Instead of multiplying a vector by the matrix to calculate ##y = Ax## you solve the equiations ##Ay = x##. (You want to factorize ##A = LL^T## or ##A = LDL^T## before you start the iterations, or course).

If ##A## is singular, you can add a constant multiple of the unit matrix before you factorize it. If you are finding the eigenvalues ##\lambda_i## of ##(A + cI)^{-1}##, the eigenvalues of ##A## are ##1 / \lambda_i - c##.

If you are solving a generalized eigenproblem ##Kx = \lambda Mx##, and K is singular, you add a multiple of ##M## to ##K## instead of a multiple of ##I##.
 
Thanks. It works now, but there is a problem which I think is due to deviation from orthogonality: I have many instances of the same eigenvalue in the final list of eigenvalues. Or perhaps it's due the the numerical error introduced when solving the equation [itex]Ax_{k+1}=x_{k}[/itex] ( I use an iterative solver).
 
Hassan2 said:
Thanks. It works now, but there is a problem which I think is due to deviation from orthogonality: I have many instances of the same eigenvalue in the final list of eigenvalues.

Remember my post when I said "you really really don't want to write your own Lanczos routine?" You are just start the adventure game of finding out why, if you keep trying!

Warning: I spent a long time on this several years ago, and gave up after several months because my code was never "100% reliable" on new problems.

If you read the literature, there are lots of ways that claim to fix this problem - but only if you can find a a paper that works for your matrices, AND you can understand it!

Have fun.
 
Yes I remember well. I think I should give up too. Perhaps the subspace iteration is enough for my purpose.

Thanks for the advice.
 

Similar threads

  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
7K
Replies
5
Views
1K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 15 ·
Replies
15
Views
3K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 0 ·
Replies
0
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K