MATLAB实现体心立方紧束缚近似能带结构画图代码
时间: 2023-07-13 13:17:49 浏览: 132
以下是MATLAB实现体心立方紧束缚近似能带结构画图的代码:
```MATLAB
clear all;
clc;
t1 = 1; % hopping parameter along x, y, z directions
t2 = t1/sqrt(2); % hopping parameter along face diagonals
a = 1; % lattice constant
k = linspace(-pi/a, pi/a, 100); % wave vector
N = length(k); % number of points in k-space
% define the tight binding Hamiltonian
H = zeros(N,N);
for i=1:N-1
H(i,i+1) = -t1;
H(i+1,i) = -t1;
H(i,i+2) = -t2;
H(i+2,i) = -t2;
H(i+1,i+2) = -t2;
H(i+2,i+1) = -t2;
end
H(1,N-1) = -t2;
H(N-1,1) = -t2;
H(1,N) = -t1;
H(N,1) = -t1;
H(N-1,N) = -t2;
H(N,N-1) = -t2;
% calculate the eigenvalues of the Hamiltonian
E = eig(H);
% plot the band structure
plot(k, E, 'b');
hold on;
plot(k, zeros(size(k)), 'k--');
xlabel('k');
ylabel('E');
title('Band structure');
```
在代码中,我们首先定义了体心立方晶格的三个跃迁参数$t1$和$t2$,以及晶格常数$a$。生成$k$的一维数组,代表了$k$空间中的波矢。接着定义了体心立方紧束缚哈密顿量$H$,其中的对角元素为零,非对角元素为$-t1$和$-t2$,代表每个格点上的电子只能跃迁到相邻的格点上或者相邻的面心。最后,使用`eig`函数计算该哈密顿量的本征值$E$,并绘制出能带结构。
阅读全文