Sektor has helpfully provided a way to numerically plot the Fourier transform of the eigenstates, as follows. First, create the matrix:
Eo = 1;
t = 0.2;
NA = 100;
matrix = SparseArray[{{i_, i_} ->
Eo, {i_, j_} /; Abs[i - j] == 1 -> -t, {i_, j_} /;
i == 1 && j == NA -> -t, {i_, j_} /;
j == 1 && i == NA -> -t}, {NA, NA}];
You can then Map
Fourier
onto the individual eigenstates, and plot some of the results:
dat = (Abs@(Fourier /@ Eigenvectors[matrix]))^2;
GraphicsGrid@
Partition[
Table[ListLinePlot[dat[[1 + 5 k]], PlotRange -> All,
PlotLabel -> "Eigenstate " <> ToString[1 + 5 k],
ImageSize -> 300], {k, 0, 19}], 5]
which produces the following diagram (right-click and open the image below in a new tab to view it in full size):
You'll notice a pattern here: the spectral domain of the eigenstates appear to be counterpropagating plane waves.
As it turns out, this can be made mathematically rigorous by exploiting the circulant Hermitian symmetry of the matrix. Circulant matrices are diagonalized by the DFT operator, and thus the eigenvectors of a circulant matrix are given by DFT basis plane waves:
$$\mathbf{v}_k=\left(1,\omega^k,\omega^{2k},\ldots,\omega^{(n-1)k}\right)^\mathsf{T}$$
where $\omega$ is the $n$th primitive root of unity.
However, you'll notice that this appears to contradict the preceding graphic, which shows two frequency components in each eigenstate. The origin of this behavior is due to the multiple-degeneracy of the eigenspectrum, since a circulant matrix has eigenvalues
$$\lambda_k=\sum_{j=0}^{n-1}c_j\omega^{(n-j)n}$$
where the $c_j$ are the basis entries that generate the circulant matrix. And you can evaluate this for yourself to see that almost every eigenvalue is doubly-degenerate; LAPACK has a habit of choosing degenerate substate basis vectors in such a way as to force them to be purely-real in the case of Hermitian input, and that's why you see double-spikes in the frequency spectrum for most of the eigenstates (the sum of two counterpropagating plane waves is a purely-real wave).
ListLinePlot[(Abs@Fourier@Eigenvectors[matrix])^2]
use this line to get a simple result. Try to adapt it to work for your other cases. $\endgroup$Fourier/@Eigenvectors[...]
, instead ofFourier@Eigenvectors[...]
? Otherwise, you are taking a 2D Fourier transform of the basis, instead of taking the 1D Fourier transforms of the individual eigenstates. $\endgroup$