用matlab计算紧束缚模型一维SSH的本征值
时间: 2023-11-27 14:53:14 浏览: 790
紧束缚模型是一种离散化的模型,用于描述电子在晶格中的行为。一维SSH模型是指具有两种不同类型的原子相间排列的一维晶格模型。下面给出用MATLAB计算SSH模型本征值的代码:
```matlab
% 定义模型参数
t1 = 1;
t2 = 0.5;
Delta = 0.1;
% 定义晶格大小和边界条件
N = 50;
L = N/2;
bc = 'periodic';
% 构造哈密顿矩阵
H = zeros(N,N);
for i = 1:N
if mod(i,2) == 1
H(i,i) = Delta/2;
H(i+1,i) = t1;
H(i,i+1) = t1;
else
H(i,i) = -Delta/2;
H(i+1,i) = t2;
H(i,i+1) = t2;
end
end
% 处理周期边界条件
if strcmp(bc,'periodic')
H(1,N) = t1;
H(N,1) = t1;
H(N-1,N) = t1;
H(N,N-1) = t1;
end
% 计算本征值和本征态
[V,D] = eig(H);
% 绘制能带图
k = linspace(-pi,pi,100);
E = zeros(size(k));
for i = 1:length(k)
Hk = zeros(N,N);
for j = 1:N
if mod(j,2) == 1
Hk(j,j) = Delta/2;
Hk(j+1,j) = t1*exp(-1i*k(i));
Hk(j,j+1) = t1*exp(1i*k(i));
else
Hk(j,j) = -Delta/2;
Hk(j+1,j) = t2*exp(-1i*k(i));
Hk(j,j+1) = t2*exp(1i*k(i));
end
end
if strcmp(bc,'periodic')
Hk(1,N) = t1*exp(-1i*k(i));
Hk(N,1) = t1*exp(1i*k(i));
Hk(N-1,N) = t1*exp(-1i*k(i));
Hk(N,N-1) = t1*exp(1i*k(i));
end
E(i) = min(eig(Hk));
end
plot(k,E,'k')
xlabel('k')
ylabel('E')
```
在此代码中,我们首先定义了模型参数,包括两种不同的跃迁能级和离子之间的交互作用强度。然后,我们定义了晶格大小和边界条件,并使用这些参数构造了哈密顿矩阵。接下来,我们使用MATLAB内置的函数“eig”计算哈密顿矩阵的本征值和本征态。最后,我们使用计算出的本征值绘制了能带图。
运行此代码,即可得到SSH模型的能带图,从而得到该模型的本征值。
阅读全文
相关推荐









