# calculate the eigenvalue of a complex hamiltonian (graphene)

I have a doubt about the calculation of the eigenvalue of the graphene Hamiltonian.

$$H = \begin{pmatrix} 0 & \Delta & \\ \Delta^{*} & 0& \\ \end{pmatrix}$$

where $$\Delta = \exp (-i a k_x) \left(1+2 \exp \left(\frac{1}{2} i 3 a k_x\right) \cos \left(\frac{1}{2} \sqrt{3} a k_y\right)\right)$$ and $$a=1$$.

I can calculate the eigenvalues analytically:

$$\lambda_{1,2} = \pm \sqrt{\Delta \Delta^{*}} = \pm\sqrt{4 \cos \left(\frac{3 \text{kx}}{2}\right) \cos \left(\frac{\sqrt{3} \text{ky}}{2}\right)+2 \cos \left(\sqrt{3} \text{ky}\right)+3}$$

Using Mathematica I obtain,

$$\eta_{1,2} = \pm e^{-\frac{1}{4} (3 i \text{kx})} \sqrt{\left(2 \cos \left(\frac{\sqrt{3} \text{ky}}{2}\right)+e^{\frac{3 i \text{kx}}{2}}\right) \left(1+2 e^{\frac{3 i \text{kx}}{2}} \cos \left(\frac{\sqrt{3} \text{ky}}{2}\right)\right)}$$

These results are different. For example, for the positive eigenvalue and for $$k_x = \pi$$ and $$k_y = \pi$$ I obtain that $$\lambda = 2.08$$ and $$\eta = -2.08$$. Also, in Mathematica there is a jump when I plot the eigenvalue between $$[-\pi,\pi]$$

a = 1;
\[CapitalDelta]  =  Exp[-I*kx*a]*(1 + 2*Exp[I*3*kx*a/2]*Cos[Sqrt[3]/2*ky*a]);
s = {{0, \[CapitalDelta]}, {Conjugate[\[CapitalDelta]], 0}};
Eigenvalues[s] // Simplify

Plot3D[E^(-((3 I kx)/4))Sqrt[(E^((3 I kx)/2) + 2 Cos[(Sqrt[3] ky)/2]) (1 +
2 E^((3 I kx)/2) Cos[(Sqrt[3] ky)/2])], {kx, -Pi, Pi}, {ky, -Pi,
Pi}]


How I can fix that,

Thanks

• Please post the actual Mathematica code in a copy and paste-able form (InputForm) so we can paste it into a notebook. Commented Jun 9, 2023 at 2:01
• Sure, I updated the question with the Mathematica code. Commented Jun 9, 2023 at 2:26

Too long for comment. Consider

a = 1;
\[CapitalDelta] =
Exp[-I*kx*a]*(1 + 2*Exp[I*3*kx*a/2]*Cos[Sqrt[3]/2*ky*a]);
s = {{0, \[CapitalDelta]}, {Conjugate[\[CapitalDelta]], 0}};

Det[s - \[Lambda]*IdentityMatrix[2]] // ComplexExpand;

charEq = Det[s - \[Lambda]*IdentityMatrix[2]] // ComplexExpand;

sols = SolveValues[charEq == 0, \[Lambda]] // FullSimplify


(* the output is your solution $$\lambda_{1,2}$$ *)

Now simple numerical check yields

autoEigenArg = ComplexExpand[Eigenvalues[s]];

Table[sols - autoEigenArg /.
Thread[{kx, ky} -> RandomReal[{-Pi/2, Pi/2}]], {20}] // Chop


(* all {0,0} *)

However if your increase interval

Table[sols - autoEigenArg /.
Thread[{kx, ky} -> RandomReal[{-Pi, Pi}]], {20}] // Chop


Then not all differences are zero. Therefore you can't fix it since the symbolic formulas indeed differ.

Your can get the same eigenvalues with

ss = {{0, \[CapitalDelta]}, {ComplexExpand[
Conjugate[\[CapitalDelta]]], 0}};

autoEigenReImSS = Eigenvalues[ExpToTrig[ss]] // FullSimplify


(* the output is your solution $$\lambda_{1,2}$$ *)

ExpToTrig[ ] here is essential. Therefore, seems that Eigenvalues[ ] indeed handles both cases in a different way. Can be bug or limitation.