MATLAB实现面心立方紧束缚近似能带结构画图代码
时间: 2023-07-13 21:17:49 浏览: 94
基于MATLAB的紧束缚近似下面心立方晶格s态的等能面程序
以下是MATLAB实现面心立方紧束缚近似能带结构画图的代码:
```MATLAB
clear all;
clc;
t1 = 1; % hopping parameter along x, y, z directions
t2 = t1/sqrt(2); % hopping parameter along body 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;
end
H(1,N) = -t1;
H(N,1) = -t1;
for i=1:4:N-3
H(i,i+2) = -t2;
H(i+2,i) = -t2;
H(i+1,i+3) = -t2;
H(i+3,i+1) = -t2;
end
for i=1:2:N-1
H(i,i+3) = -t2;
H(i+3,i) = -t2;
end
% 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$,并绘制出能带结构。
阅读全文