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.