用MATLAB绘制出 紧束缚近似下,三维简单立方晶格 s 态电子在[1 1 0]方向上的电子有效质量分布曲线。
时间: 2024-03-21 08:44:04 浏览: 130
好的,这里是用MATLAB绘制出紧束缚近似下,三维简单立方晶格s态电子在[1 1 0]方向上的电子有效质量分布曲线的代码。
首先,我们需要定义一个三维简单立方晶格,并计算电子有效质量在[1 1 0]方向上的分布。然后,我们可以使用plot函数将计算得到的分布曲线绘制出来。
```matlab
% 定义晶格常数和倒格子向量
a = 1;
b = 2*pi/a;
% 定义紧束缚近似下s态电子的能量
E0 = -2;
delta = 1;
E1 = @(k) E0 - 2*delta*cos(a*k);
% 定义k空间范围
kmin = -pi/a;
kmax = pi/a;
nk = 100;
% 生成k空间格点
[kx, ky, kz] = meshgrid(linspace(kmin, kmax, nk));
% 计算能量和有效质量
E = E1(kx) + E1(ky) + E1(kz);
hbar = 1;
m0 = 1;
m = hbar^2./(diff(E,2)*m0*a^2);
% 计算[1 1 0]方向上的有效质量
k = b*[1 1 0]/norm([1 1 0]);
kidx = find(abs(kx(1,:,1)-k(1))<1e-6 & abs(ky(:,1,1)-k(2))<1e-6 & abs(kz(1,1,:)-k(3))<1e-6);
mv = m(kidx);
% 绘制分布曲线
figure
plot(linspace(kmin,kmax,nk), mv);
xlabel('[1 1 0] Direction');
ylabel('Effective Mass');
```
在代码中,我们使用了meshgrid函数生成了k空间中的格点,并计算了电子的能量和有效质量。然后,我们使用find函数找到了[1 1 0]方向上的k点,并计算了对应的有效质量。最后,我们使用plot函数绘制了有效质量在[1 1 0]方向上的分布曲线。
希望这个代码能对您有所帮助!
阅读全文