matlab绘图时遇到的问题,急

求帮助,我用matlab绘制石墨烯的能带结构图,再网络上找的代码,但是因为我自己的数据与代码中的不符,我就想着改一下数据,结果改完之后就不能运行了,求帮忙看一下,
下面的是错误

img


原代码如下:

img


公式是这个:

img

我修改后的代码是这样的:

img

我的公式是这样子:

img

求帮忙看一下,急
如果能帮我写一个就更好了,可以另加酬劳


epsilont=0;
beta=1;
a=1.4;
ky=-2*pi/a:0.02:2*pi/a;
kx=ky;
[KX, KY]=meshgrid(kx, ky);
chi1=epsilont+beta*sqrt(3+4*cos(a*(3/2)*KX).*cos(KY*a*(sqrt(3)/2))+2*cos(KY*a*(sqrt(3))));
mesh(KX,KY,chi1)
hold on
chi2=epsilont-beta*sqrt(3+4*cos(a*(3/2)*KX).*cos(KY*a*(sqrt(3)/2))+2*cos(KY*a*(sqrt(3))));
mesh(KX,KY,chi2);
xlabel('k_{x}');
ylabel(' k_{y}');
zlabel('E(k)');

img


问题已解决
还有原公式的


epsilont=0;
beta=1;
a=1.4;
ky=-2*pi/a:0.02:2*pi/a;
kx=ky;
[KX, KY]=meshgrid(kx, ky);
chi1=epsilont+beta*sqrt(3+4*cos(a*(1/2)*KY).*cos(KX*a*(sqrt(3)/2))+4*cos(KY*a/2).*cos(KY*a/2));
mesh(KX,KY,chi1)
hold on
chi2=epsilont-beta*sqrt(3+4*cos(a*(1/2)*KY).*cos(KX*a*(sqrt(3)/2))+4*cos(KY*a/2).*cos(KY*a/2));
mesh(KX,KY,chi2);
xlabel('k_{x}');
ylabel(' k_{y}');
zlabel('E(k)');

img


如果觉得满足要求,请采纳!

看报错结果,应该是chi1中出现复数了,检查一下根号那里是不是有错误,根号下的数如果是负数的话,开根号才会得出复数。

你想实现这个公式是吗 ?
https://img-mid.csdnimg.cn/release/static/image/mid/ask/366052434586176.png?x-oss-process=image/auto-orient,1/resize,w_320,m_lfit

你把数据和代码发给我

可以参考一下

% 绘制石墨烯的能带结构图

% 定义常数
h_bar = 1.055e-34;
a = 0.246e-9;
t = 3.2*h_bar^2/(2*pi*a^2*2.7e-31);
k_min = -5*pi/(3*a);
k_max = 5*pi/(3*a);
n_k = 500;

% 计算kx和ky的网格
[kx, ky] = meshgrid(linspace(k_min, k_max, n_k), linspace(k_min, k_max, n_k));
ksq = kx.^2 + ky.^2;

% 计算能带
E1 = -t*sqrt(1+4*cos(sqrt(3)*kx*a/2).*cos(ky*a/2)+4*cos(ky*a/2).^2);
E2 = -t*sqrt(1+4*cos(sqrt(3)*kx*a/2).*cos(ky*a/2)+4*sin(ky*a/2).^2);

% 绘制图像
figure;
hold on;
surf(kx, ky, E1, 'LineStyle', 'none', 'FaceColor', 'b', 'FaceAlpha', 0.8);
surf(kx, ky, E2, 'LineStyle', 'none', 'FaceColor', 'r', 'FaceAlpha', 0.8);
axis equal;
view(0, 90);
colormap(jet);
colorbar;
xlabel('kx');
ylabel('ky');

img