I'm running into a strange issue when trying to compute eigenvalues of a 2x2 matrix for graphene. If I "manually diagonalise" by multiplying the two off-diagonal terms together and taking the square root, I get the correct answer. However, constructing the matrix and using the Eigenvalues
function gives me a whole bunch of imaginary terms that should not be there. Here is my code:
f[kx_, ky_,t_] := -t E^(-I kx a) (1 + 2 E^(I (3 kx a)/2 )*Cos[Sqrt[3]/2 ky a]);
BlockA[kx_, ky_, t_] := {{0, f[kx, ky, t]}, {Conjugate[f[kx, ky, t]], 0}};
FullSimplify[Eigenvalues[BlockA[kx, ky, t]], kx ∈ Reals && ky ∈ Reals && t ∈ Reals]
This generates a horrendous output that looks even worse if you put it in trigonometric form, and includes imaginary terms which should go away.
The expected result is obtained thusly:
Simplify[Conjugate[f[kx, ky,t]], Assumptions -> kx ∈ Reals && ky ∈ Reals && t ∈ Reals]
Sqrt[%*f[kx, ky,t]] // FullSimplify // ExpToTrig
Which gives
Abs[t]Sqrt[1 + 4 Cos[2.99645 ky] (Cos[5.19 kx] + Cos[2.99645 ky])]
With the variable a set to 3.46.
What course of action is best to remedy a problem like this? Since I'm going to be making larger matrices with similar terms, I can't simply use the analytic solution, so I have to figure out how to make Eigenvalues
work. Thanks in advance!