求帮助,我用matlab绘制石墨烯的能带结构图,再网络上找的代码,但是因为我自己的数据与代码中的不符,我就想着改一下数据,结果改完之后就不能运行了,求帮忙看一下,
下面的是错误
我修改后的代码是这样的:
我的公式是这样子:
求帮忙看一下,急
如果能帮我写一个就更好了,可以另加酬劳
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)');
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)');
看报错结果,应该是chi1中出现复数了,检查一下根号那里是不是有错误,根号下的数如果是负数的话,开根号才会得出复数。
你把数据和代码发给我
可以参考一下
% 绘制石墨烯的能带结构图
% 定义常数
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');