MATLAB: anti-crossing eigenvalues

  • Context: MATLAB 
  • Thread starter Thread starter phy127
  • Start date Start date
  • Tags Tags
    Eigenvalues Matlab
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
1 reply · 3K views
phy127
Messages
12
Reaction score
0
I am solving an eigenvalue problem -- Hamiltonian problem in Quantum Mechanics. The matrix is 8x8 with off-diagonal terms, but some are zero.

It is well known that the eigenvalues of a Hermitian matrix anti-cross as it nears each other. This is very easy see if the matrix have an independent variable.

However, if the matrix have some zero off-diagonal elements, the anti-crossing is lost and some eigenvalues could cross. Then, the problem arises.

Correct me if I'm wrong. When a matrix is diagonalized, MATLAB sorted the eigenvalues. Now, if there is anti-crossing, I have no problem since the initial sorting of eigenvalues will not change as I vary my variable.

If there are eigenvalues that crosses each other, then at the instant there is crossing, the sorting of eigenvalues will be different. Please have a look at my attached image. Look at the yellow and purple lines, at their crossing, the initial sorting of eigenvalues is broken.

QUESTION:
Is there any way such that the initial sorting of eigenvalues, e.g. when my variable is zero, will not change as I vary my variable?
Back in my mind, it should be possible if during the sorting of eigenvalues, in each step, it will consider the previous eigenvalues. The changes are small anyway. But I don't know exactly how to implement it.

Please help! :)
 

Attachments

  • untitled.jpg
    untitled.jpg
    26.4 KB · Views: 651
Physics news on Phys.org
The answer to your question is yes, it is possible to keep the initial sorting of eigenvalues as you vary your variable. The easiest way to do this is to use an iterative method such as the Jacobi iterative method. This method works by successively finding the eigenvalues and eigenvectors of the matrix. In each iteration, the eigenvalues and eigenvectors are re-computed using the current values of the eigenvalues and eigenvectors. This ensures that the sorting of the eigenvalues remains consistent as the matrix changes.