2D SSH模型的能帶圖和邊緣態
作者:由 搗蛋鬼 發表于 歷史時間:2021-05-24
一、能帶圖
程式碼如下:
clc
;
clear
;
w
=
2
;
v
=
1
;
h
=
zeros
(
4
);
x
=
-
pi
:
pi
/
100
:
pi
;
y
=
-
pi
:
pi
/
100
:
pi
;
for
ii
=
1
:
201
kx
=
x
(
ii
);
for
jj
=
1
:
201
ky
=
y
(
jj
);
h
(
1
,
2
)=
w
+
v
*
exp
(
-
1
i
*
kx
);
h
(
1
,
3
)=
w
+
v
*
exp
(
-
1
i
*
ky
);
h
(
2
,
4
)=
w
+
v
*
exp
(
-
1
i
*
ky
);
h
(
3
,
4
)=
w
+
v
*
exp
(
-
1
i
*
kx
);
H
=
h
+
h
‘
;
E
=
eig
(
H
);
E1
(
ii
,
jj
)=
E
(
1
);
E2
(
ii
,
jj
)=
E
(
2
);
E3
(
ii
,
jj
)=
E
(
3
);
E4
(
ii
,
jj
)=
E
(
4
);
end
end
[
X
,
Y
]=
meshgrid
(
x
,
y
);
surface
(
X
,
Y
,
E1
);
hold
on
surface
(
X
,
Y
,
E2
);
hold
on
surface
(
X
,
Y
,
E3
);
%畫下能帶
hold
on
surface
(
X
,
Y
,
E4
);
shading
interp
%使更光滑
結果如下:
二、邊緣態
程式碼如下:
clc;clear;
w=2;
v=1;
h=zeros(4);
g=zeros(4);
N=20;
y=-pi:pi/100:pi;
for ii=1:201
k=y(ii);
h(1,2)=w;
h(1,3)=w+v*exp(-1i*k);
h(2,4)=w+v*exp(-1i*k);
h(3,4)=w;
H=h+h’;
g(2,1)=v;
g(4,3)=v;
matrix=kron(eye(N),H)+kron(diag(ones(1,N-1),1),g)+kron(diag(ones(1,N-1),-1),g‘);
E(ii,:)=eig(matrix)
end
plot(y,E,’k‘)
xlim([-pi,pi])
結果如下:
w=2,v=1時,
w=1,v=2時,