MATLAB实现紧束缚近似能带结构画图代码
时间: 2023-07-13 07:17:49 浏览: 165
以下是MATLAB实现紧束缚近似能带结构画图的代码:
```MATLAB
clear all;
clc;
t = 1; % hopping parameter
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) = -t;
H(i+1,i) = -t;
end
H(1,N) = -t;
H(N,1) = -t;
% 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');
```
在代码中,我们首先定义了紧束缚模型中的两个参数$t$和$a$,然后生成$k$的一维数组,代表了$k$空间中的波矢。接着定义了紧束缚哈密顿量$H$,其中的对角元素为零,非对角元素为$-t$,代表每个格点上的电子只能跃迁到相邻的格点上。最后,使用`eig`函数计算该哈密顿量的本征值$E$,并绘制出能带结构。
相关问题
matlab meshgrid_MATLAB实现紧束缚近似能带结构画图
好的,这是一个关于MATLAB中使用meshgrid函数实现紧束缚近似能带结构画图的问题。我可以为您提供一些指导。
首先,紧束缚近似是一种处理具有周期性结构的晶体的方法,能带结构是指在晶体中电子能量随动量变化的分布情况。在MATLAB中,使用meshgrid函数可以绘制这种能带结构。
下面是一个简单的示例代码,用于绘制紧束缚近似的能带结构图:
```matlab
% 定义晶格尺寸和倒格子向量
a = 1; % 晶格常数
b = 2*pi/a; % 倒格子向量
% 定义能量函数
E0 = -2;
delta = 1;
E1 = @(k) E0 - 2*delta*cos(a*k);
% 定义k空间范围
kmin = -pi/a;
kmax = pi/a;
nk = 100;
% 生成k空间格点
[kx, ky] = meshgrid(linspace(kmin, kmax, nk));
% 计算能带结构
E = E1(kx) + E1(ky);
% 绘图
figure
surf(kx, ky, E)
xlabel('kx')
ylabel('ky')
zlabel('Energy')
```
在这个示例中,我们定义了晶格尺寸和倒格子向量,以及能量函数和k空间范围。然后,使用meshgrid函数生成了k空间中的格点,并计算了能带结构。最后,使用surf函数绘制了能带结构图。
您可以根据您的具体需求进行调整和修改,以获得您想要的结果。希望这个示例对您有所帮助!
MATLAB实现面心立方紧束缚近似能带结构画图代码
以下是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$,并绘制出能带结构。