I have a 6x6 matrix, depending on 2 variables kx
and ky
and defined as the sum of the two following matrices (t1
, t2
and b
are some numerical parameters)
H1[kx_,ky_]:=t1*{{0, Exp[I*kx*b], 0, Exp[I*ky*b], 0, 0},
{Exp[-I*kx*b], 0, Exp[I*ky*b], 0, 0, 0},
{0, Exp[-I*ky*b], 0, Exp[-I*kx*b], 0, 0},
{Exp[-I*ky*b], 0, Exp[I*kx*b], 0, 0, 0},
{0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0}}
H2[kx_, ky_] := t2*{{0, 0, 0, 0, Exp[I*(-kx*Sqrt[3]/2 + ky/2)*b], Exp[I*(kx/2 - ky*Sqrt[3]/2)*b]},
{0, 0, 0, 0, Exp[I*(kx*Sqrt[3]/2 + ky/2)*b], Exp[I*(-kx/2 - ky*Sqrt[3]/2)*b]},
{0, 0, 0, 0, Exp[I*(kx*Sqrt[3]/2 - ky/2)*b], Exp[I*(-kx/2 + ky*Sqrt[3]/2)*b]},
{0, 0, 0, 0, Exp[I*(-kx*Sqrt[3]/2 - ky/2)*b], Exp[I*(kx/2 + ky*Sqrt[3]/2)*b]}, {Exp[-I*(-kx*Sqrt[3]/2 + ky/2)*b], Exp[-I*(kx*Sqrt[3]/2 + ky/2)*b], Exp[-I*(kx*Sqrt[3]/2 - ky/2)*b], Exp[-I*(-kx*Sqrt[3]/2 - ky/2)*b], 0, 0},
{Exp[-I*(kx/2 - ky*Sqrt[3]/2)*b], Exp[-I*(-kx/2 - ky*Sqrt[3]/2)*b], Exp[-I*(-kx/2 + ky*Sqrt[3]/2)*b], Exp[-I*(kx/2 + ky*Sqrt[3]/2)*b], 0, 0}}
H[kx_, ky_] := H1[kx,ky] + H2[kx,ky]
The matrix is Hermitian, and I need to obtain the 6 real eigenvalues as functions of kx
and ky
. There's some physical meaning behind those eigenvalues, and they should be continuous functions of kx
and ky
. So I do
ev[kx_, ky_] := Eigenvalues[H[kx, ky]]
However, when I plot the eigenvalues with Plot3D
, I clearly get some discontinuities and very messy plots
Plot3D[{ev[kx, ky][[4]]}, {kx, -2*Pi, 2*Pi}, {ky, -2*Pi, 2*Pi}]
I do not think there are typos in the matrix expressions as I have other ways to check the numerical values of some eigenvalues, and the matrix is hermitian as expected.
Following a similar answered question here on SE, I've tried to use
ev[kx, ky][[4]] // Re
but it does not fix the problem. Am I doing something wrong, or how can I fix that?