首先,您最初写道,您的方程式是cos(K)=5 sinc(5.12E−−√)−cos(5.12E−−√),但你的意思很明显cos(K)=5 sinc(5.12E−−√)+cos(5.12E−−√)
二、sinc()函数有不同的约定。另一个问题是基于 Mathematica,它使用约定 sinc(x)≡sinxx, 而 Matlab/Octave 使用约定 sinc(x)≡sin(πx)πx. (准确地说当然需要单独定义sinc(0)≡1.) 这就是为什么你的第一个等高线图显示“完全没有相似之处”。
补偿这些不同的约定并稍微更改您的代码,使其仅显示 Z=0 的轮廓(如 Biswajit Banerjee 的评论中所建议的那样)产生
k = linspace(0, 3*pi, 99); % 0 < k < 3pi , crystal momentum.
E = linspace(0.1, 3.5, 99);% Energy.
[X, Y] = meshgrid(k, E);
P = 5; % 2mU_0b/hbar^2.
Z = cos(X) - ( P * pi * sinc( 5.12 * sqrt(Y)/pi ) ) - cos( 5.12 * sqrt(Y) );
contour(X, Y, Z,[0,0],'linewidth',2,'linecolor','k');
for i=1:3
line(i*[pi,pi],[0,3.5],'color','k','linestyle','--')
end
xlabel('k')
ylabel('E(k)')
legend('cos(K) - P * sin(E) - cos(E)')
title('Dispersion relation for periodic potential in extended zone.')
产生情节

我能想出的隔离这些曲线部分的最佳方法是简单地运行contour单独的区域并将它们绘制在一起。下面的代码实现了这一点并将其概括为N部分。
P = 5; % 2mU_0b/hbar^2.
a=5.12;
N=3;
hold on;
for i=1:N
k = linspace((i-1)*pi, i*pi, 1000); % 0 < k < 3pi , crystal momentum.
E = linspace(((i-1)*pi/a)^2, (i*pi/a)^2, 1000);% Energy.
[X, Y] = meshgrid(k, E);
Z = cos(X) - ( P * pi * sinc( a * sqrt(Y)/pi ) ) - cos( a * sqrt(Y) );
contour(X, Y, Z,[0;0],'linewidth',2,'linecolor','k');
line(i*[pi,pi],[0,(N*pi/a)^2+0.2],'color','k','linestyle','--')
end
xlabel('k')
xlim([0,N*pi+0.2])
ylim([0,(N*pi/a)^2+0.2])
ylabel('E(k)')
