24小时热门版块排行榜    

查看: 2439  |  回复: 2
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

菲斐

新虫 (初入文坛)

[求助] 求matlab中 diff Difference order N must be a positive integer scalar什么意思 已有1人参与

我是matlab新手,不知道程序中为什么会出现??? Error using ==> diff
Difference order N must be a positive integer scalar.

Error in ==> chern at 90
phpx2=diff(H2,'x');
我只是把第一个程序中的H变了一下,就有错误,可是如果把这2段分到2个m文件里,就木有问题,咋回事呀。大神帮忙呀,程序如下


syms x y
a=1.0;
t=1;
t1=0.1*t;
u0=0.6*sqrt(3)*t;
u2=0.6*sqrt(3)*t;
f=2*cos(x*a/2)*cos(sqrt(3)*a*y/2)-2*i*cos(sqrt(3)*a*y/2)*sin(a*x/2)+cos(x*a)+i*sin(x*a);
g=-i*(2*i*sin(sqrt(3)*a*y)-4*i*sin(sqrt(3)*a*y/2+3*a*x/2));
H=[u0/2+t1*g-u2/2,2*t*f;2*t*conj(f),-u0/2-t1*g+u2/2];
phpx=diff(H,'x');
phpy=diff(H,'y');
h=6.63*10^(-34);%此为普朗克常数


hall=0;
   
for kx = -2*pi/(3*a) : 4*pi/(30*a) : 2*pi/(3*a)
   
   
    for ky = -4*pi*sqrt(3)/(9*a) : 8*pi*sqrt(3)/(90*a) : 4*pi*sqrt(3)/(9*a)
        
        if -2*pi/(3*a) <= kx <= 0 && (-sqrt(3)*kx/3-4*pi*sqrt(3)/(9*a)) <= ky <=(sqrt(3)*kx/3+4*pi*sqrt(3)/(9*a))
         
           % f=exp(-i*((kx*a/2)+sqrt(3)*ky*a/2))+ exp(-i*((kx*a/2)-sqrt(3)*ky*a/2))+exp(-i*(-kx*a)) ;
          %g1=exp(i*(ky*sqrt(3)*a))-exp(i*(-kx*3*a/2+ky*sqrt(3)*a/2))+exp(i*(-kx*3*a/2-ky*sqrt(3)*a/2));
          %g2=-exp(i*(-ky*sqrt(3)*a))+exp(i*(kx*3*a /2-ky*sqrt(3)*a/2))-exp(i*(kx*3*a/2+ky*sqrt(3)*a/2));
          %g=-i*(g1+g2);
            
            
            f=2*cos(kx*a/2)*cos(sqrt(3)*a*ky/2)-2*i*cos(sqrt(3)*a*ky/2)*sin(a*kx/2)+cos(kx*a)+i*sin(kx*a);
           g=-i*(2*i*sin(sqrt(3)*a*ky)-4*i*sin(sqrt(3)*a*ky/2+3*a*kx/2));
           H=[u0/2+t1*g-u2/2,2*t*f;2*t*conj(f),-u0/2-t1*g+u2/2];
           [P,E]=eig(H);
           mk=[P(1,1);P(2,1)];    %用eig求得的本征矢和本征值不是按从小到大的顺序排列的
           nk=[P(1,2);P(2,2)];
           Em=E(1,1);
           En=E(2,2);
           vx=subs(phpx,{x,y},{kx,ky});
           vy=subs(phpy,{x,y},{kx,ky});
           s=i*exp(2)*9*a^2/(4*sqrt(3)*pi*h);%此为系数
           if Em<En
           ha=s*((mk'*vx*nk)*(nk'*vy*mk)-(mk'*vy*nk)*(nk'*vx*mk)) /(Em-En)^2;
         
           else
           ha=s*((nk'*vx*mk)*(mk'*vy*nk)-(nk'*vy*mk)*(mk'*vx*nk)) /(En-Em)^2;
           
           end
           hall=hall+ha;
        end
        if 0 <= kx <= 2*pi/(3*a) && (sqrt(3)*kx/3-4*pi*sqrt(3)/(9*a)) <= ky <=(-sqrt(3)*kx/3+4*pi*sqrt(3)/(9*a))
         
            %f=exp(-i*((kx*a/2)+sqrt(3)*ky*a/2))+ exp(-i*((kx*a/2)-sqrt(3)*ky*a/2))+exp(-i*(-kx*a)) ;
          %g1=exp(i*(ky*sqrt(3)*a))-exp(i*(-kx*3*a/2+ky*sqrt(3)*a/2))+exp(i*(-kx*3*a/2-ky*sqrt(3)*a/2));
          %g2=-exp(i*(-ky*sqrt(3)*a))+exp(i*(kx*3*a /2-ky*sqrt(3)*a/2))-exp(i*(kx*3*a/2+ky*sqrt(3)*a/2));
          %g=-i*(g1+g2);
            
            
            
            f=2*cos(kx*a/2)*cos(sqrt(3)*a*ky/2)-2*i*cos(sqrt(3)*a*ky/2)*sin(a*kx/2)+cos(kx*a)+i*sin(kx*a);
           g=-i*(2*i*sin(sqrt(3)*a*ky)-4*i*sin(sqrt(3)*a*ky/2+3*a*kx/2));
           H=[u0/2+t1*g-u2/2,2*t*f;2*t*conj(f),-u0/2-t1*g+u2/2];
           [P,E]=eig(H);
           mk=[P(1,1);P(2,1)];
           nk=[P(1,2);P(2,2)];
           Em=E(1,1);
           En=E(2,2);
           vx=subs(phpx,{x,y},{kx,ky});
           vy=subs(phpy,{x,y},{kx,ky});
           s=i*exp(2)*9*a^2/(4*sqrt(3)*pi*h);
           if Em<En
              ha=s*((mk'*vx*nk)*(nk'*vy*mk)-(mk'*vy*nk)*(nk'*vx*mk)) /(Em-En)^2;
            
           else
              ha=s*((nk'*vx*mk)*(mk'*vy*nk)-(nk'*vy*mk)*(mk'*vx*nk)) /(En-Em)^2;
            
           end
            hall=hall+ha;
         
         
        end
    end
end
c1=hall*h/(2*pi*exp(2));%第一段



H2=[u0/2-t1*g+u2/2,2*t*f;2*t*conj(f),-u0/2+t1*g-u2/2];
phpx2=diff(H2,'x');
phpy2=diff(H2,'y');
hall2=0;
for kx = -2*pi/(3*a) : 4*pi/(30*a) : 2*pi/(3*a)
   
   
    for ky = -4*pi*sqrt(3)/(9*a) : 8*pi*sqrt(3)/(90*a) : 4*pi*sqrt(3)/(9*a)
        
        if -2*pi/(3*a) <= kx <= 0 && (-sqrt(3)*kx/3-4*pi*sqrt(3)/(9*a)) <= ky <=(sqrt(3)*kx/3+4*pi*sqrt(3)/(9*a))
         
           % f=exp(-i*((kx*a/2)+sqrt(3)*ky*a/2))+ exp(-i*((kx*a/2)-sqrt(3)*ky*a/2))+exp(-i*(-kx*a)) ;
          %g1=exp(i*(ky*sqrt(3)*a))-exp(i*(-kx*3*a/2+ky*sqrt(3)*a/2))+exp(i*(-kx*3*a/2-ky*sqrt(3)*a/2));
          %g2=-exp(i*(-ky*sqrt(3)*a))+exp(i*(kx*3*a /2-ky*sqrt(3)*a/2))-exp(i*(kx*3*a/2+ky*sqrt(3)*a/2));
          %g=-i*(g1+g2);
            
            
            f=2*cos(kx*a/2)*cos(sqrt(3)*a*ky/2)-2*i*cos(sqrt(3)*a*ky/2)*sin(a*kx/2)+cos(kx*a)+i*sin(kx*a);
           g=-i*(2*i*sin(sqrt(3)*a*ky)-4*i*sin(sqrt(3)*a*ky/2+3*a*kx/2));
           H2=[u0/2-t1*g+u2/2,2*t*f;2*t*conj(f),-u0/2+t1*g-u2/2];
           [P,E]=eig(H2);
           mk=[P(1,1);P(2,1)];    %用eig求得的本征矢和本征值不是按从小到大的顺序排列的
           nk=[P(1,2);P(2,2)];
           Em=E(1,1);
           En=E(2,2);
           vx2=subs(phpx2,{x,y},{kx,ky});
           vy2=subs(phpy2,{x,y},{kx,ky});
           s=i*exp(2)*9*a^2/(4*sqrt(3)*pi*h);%此为系数
           if Em<En
           ha=s*((mk'*vxb*nk)*(nk'*vyb*mk)-(mk'*vyb*nk)*(nk'*vxb*mk)) /(Em-En)^2;
         
           else
           ha=s*((nk'*vxb*mk)*(mk'*vyb*nk)-(nk'*vyb*mk)*(mk'*vxb*nk)) /(En-Em)^2;
           
           end
           hall2=hallb+ha;
        end
        if 0 <= kx <= 2*pi/(3*a) && (sqrt(3)*kx/3-4*pi*sqrt(3)/(9*a)) <= ky <=(-sqrt(3)*kx/3+4*pi*sqrt(3)/(9*a))
         
            %f=exp(-i*((kx*a/2)+sqrt(3)*ky*a/2))+ exp(-i*((kx*a/2)-sqrt(3)*ky*a/2))+exp(-i*(-kx*a)) ;
          %g1=exp(i*(ky*sqrt(3)*a))-exp(i*(-kx*3*a/2+ky*sqrt(3)*a/2))+exp(i*(-kx*3*a/2-ky*sqrt(3)*a/2));
          %g2=-exp(i*(-ky*sqrt(3)*a))+exp(i*(kx*3*a /2-ky*sqrt(3)*a/2))-exp(i*(kx*3*a/2+ky*sqrt(3)*a/2));
          %g=-i*(g1+g2);
            
            
            
            f=2*cos(kx*a/2)*cos(sqrt(3)*a*ky/2)-2*i*cos(sqrt(3)*a*ky/2)*sin(a*kx/2)+cos(kx*a)+i*sin(kx*a);
           g=-i*(2*i*sin(sqrt(3)*a*ky)-4*i*sin(sqrt(3)*a*ky/2+3*a*kx/2));
            H2=[u0/2-t1*g+u2/2,2*t*f;2*t*conj(f),-u0/2+t1*g-u2/2];
           [P,E]=eig(H2);
           mk=[P(1,1);P(2,1)];
           nk=[P(1,2);P(2,2)];
           Em=E(1,1);
           En=E(2,2);
           vx2=subs(phpx2,{x,y},{kx,ky});
           vy2=subs(phpy2,{x,y},{kx,ky});
           s=i*exp(2)*9*a^2/(4*sqrt(3)*pi*h);
           if Em<En
              ha=s*((mk'*vxb*nk)*(nk'*vyb*mk)-(mk'*vyb*nk)*(nk'*vxb*mk)) /(Em-En)^2;
            
           else
              ha=s*((nk'*vxb*mk)*(mk'*vyb*nk)-(nk'*vyb*mk)*(mk'*vxb*nk)) /(En-Em)^2;
            
           end
            hall2=hall2+ha;
         
         
        end
    end
end
c2=hallb*h/(2*pi*exp(2));
c=c1+c2;%第二段
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

菲斐

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by zhchh008 at 2014-10-30 19:53:58
第一: u0=0.6*sqrt(3)*t; u2=0.6*sqrt(3)*t; 二者是一样的。第二,这是典型的VB或C语言习惯。完全没有matrix的影子。错误信息的意思是,你在求导(微分)时,阶数必须为正整数,比如不能求某函数的0,5阶导数。

u0与u2的比值确实就是一样的呀,不一样的只是H和H2,我才学matlab,见谅,我这是想求chern number,您听说过吗?
3楼2014-11-04 16:03:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 3 个回答

zhchh008

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
第一: u0=0.6*sqrt(3)*t; u2=0.6*sqrt(3)*t; 二者是一样的。第二,这是典型的VB或C语言习惯。完全没有matrix的影子。错误信息的意思是,你在求导(微分)时,阶数必须为正整数,比如不能求某函数的0,5阶导数。
2楼2014-10-30 19:53:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 311求调剂 +3 冬十三 2026-03-24 3/150 2026-03-24 21:31 by peike
[考研] 材料与化工考研调剂 +7 孅華 2026-03-22 7/350 2026-03-24 21:04 by greychen00
[考研] 07化学280分求调剂 +6 722865 2026-03-23 6/300 2026-03-24 20:58 by allen-yin
[考研] 材料学硕,求调剂 6+3 糖葫芦888ll 2026-03-22 7/350 2026-03-24 17:11 by hello七七
[考研] 293求调剂 +6 加一一九 2026-03-24 6/300 2026-03-24 14:29 by JourneyLucky
[基金申请] 请教下大家 2026年国家基金申请是双盲审吗? +3 lishucheng1 2026-03-22 5/250 2026-03-24 08:22 by gltch
[考研] 341求调剂(一志愿湖南大学070300) +5 番茄头--- 2026-03-22 6/300 2026-03-23 23:45 by Txy@872106
[考研] 291求调剂 +8 hhhhxn.. 2026-03-23 8/400 2026-03-23 23:15 by peike
[考研] 北科281学硕材料求调剂 +8 tcxiaoxx 2026-03-20 9/450 2026-03-23 12:16 by tcxiaoxx
[考研] 289材料与化工(085600)B区求调剂 +3 这么名字咋样 2026-03-22 4/200 2026-03-22 17:56 by 云民大李老师
[考研] 生物学调剂 +5 Surekei 2026-03-21 5/250 2026-03-22 14:39 by tcx007
[考研] 269专硕求调剂 +6 金恩贝 2026-03-21 6/300 2026-03-22 14:31 by ColorlessPI
[考研] 求调剂 +4 要好好无聊 2026-03-21 4/200 2026-03-21 18:57 by 学员8dgXkO
[考研] 材料与化工(0856)304求 B区 调剂 +3 邱gl 2026-03-21 3/150 2026-03-21 13:47 by lature00
[考研] 330求调剂0854 +3 assdll 2026-03-21 3/150 2026-03-21 13:01 by 搏击518
[考研] 一志愿西南交大,求调剂 +5 材化逐梦人 2026-03-18 5/250 2026-03-21 00:26 by JourneyLucky
[考研] 304求调剂 +7 司空. 2026-03-18 7/350 2026-03-20 23:08 by JourneyLucky
[考研] 0817 化学工程 299分求调剂 有科研经历 有二区文章 +22 rare12345 2026-03-18 22/1100 2026-03-20 20:39 by zhukairuo
[考研] 295材料求调剂,一志愿武汉理工085601专硕 +5 Charlieyq 2026-03-19 5/250 2026-03-20 20:35 by JourneyLucky
[考研] 一志愿 南京航空航天大学大学 ,080500材料科学与工程学硕 +5 @taotao 2026-03-20 5/250 2026-03-20 20:16 by JourneyLucky
信息提示
请填处理意见