MATLAB Answers

Need Help Understanding a peculiar result when comparing MATLAB's Eigenvectors to my own

3 views (last 30 days)
Marcus Rosales
Marcus Rosales on 16 Feb 2021
Commented: Marcus Rosales on 16 Feb 2021
Hello everyone, I am working on a simulation and have ran into an issue. To begin I am starting off with a 2D tight binding Hamiltonian on a NxN square lattice. That's more physics than MATLAB so we can think of states of this system as being represented by N^2x1 column vectors and index site (i,j) by the x=N*(i-1)+j-th component of this vector. This means we label sites sequentially through each row.
The tight binding Hamiltonian we want is for only nearest neighbor hopings with periodic boundary conditions. I'll just attach code which generates this but it is basically two diagonals offset from the main diagonal. The boundary conditions are a pain to code, but I know the energies I get are correct since I compared with the analytic solution.
The actual question starts here. Say we obtained our solutions with: [V,E]=eig(T) where T is the tight binding hamiltonian. We know:
Now this model is exactly solvable via a discrete fourier transform, which can be represented by the matrix: . k corresponds to the wave vectors in the first BZ zone and r the lattice positions relative to the center (don't worry about this if it doesn't make sense).
The issue I have is the following relation also holds:
Where E' is some permutation of the components of E. What I then investigated was the following products (just written in MATLAB code):
fix( V(:,l).' *Exp *10^3)/10^3;
I used fix so I could look at the sparse matrix and easily see where these guys are nonzero. We should expect this to be 1 for a single column of Exp and zero everywhere else, but this is not what I get! I often get 4 or so nonzero values!
I understand MATLAB can multiply it's eigenvectors by any constant, so they may not be exactly the same as what I have here but the issue is they should still be orthagonal. Hopefully someone has some clue on why this thing is not turning out how I expect it to since I am banging my head on my wall at this point.
  3 Comments
Marcus Rosales
Marcus Rosales on 16 Feb 2021
This is correct and as is usually the case, something I learned right AFTER asking this question.
The issue really doesn't matter in the end since each individual linear combination has a bunch of nonzero values between my basis and theirs but will have the same over all "weight".
Turns out I had a typo :/ x=j+i*(N-1) instead of x=j+N*(i-1) so things were labeled wrong :(
Mostly any Hamiltonian in physics is Hermitian since you typically want real eigenvalues, but this is a sufficient condition and not a necessary one (non-Hermitian matricies with real eigenvalues exist). The orthagonality of eigen vectors here can be seen from a representation of the Kronecker delta using complex exponentials but of course it is also because H itself is hermitain.
Here is a plot of a spectral function for fun! Now that this is working I can do my actual project. Thanks for the reply.

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by