24小时热门版块排行榜    

查看: 2593  |  回复: 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的回帖

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的回帖

菲斐

新虫 (初入文坛)

引用回帖:
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的回帖
相关版块跳转 我要订阅楼主 菲斐 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 师弟论文见刊大半年才想起来申请专利,还能抢救一下吗? +5 13108017953 2026-09-21 5/250 2026-09-27 16:46 by Leogzhya
[教师之家] 某top大学教授说“能够在市场中兑现的能力才是真能力”无比同意! +3 zju2000 2026-09-26 3/150 2026-09-27 16:26 by lala1008
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 ViqFlLSxHDGt 2026-09-26 3/150 2026-09-27 10:42 by 4IW0sJvtEqX8
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 ViqFlLSxHDGt 2026-09-26 3/150 2026-09-27 10:26 by 4IW0sJvtEqX8
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 ViqFlLSxHDGt 2026-09-26 3/150 2026-09-27 10:21 by 4IW0sJvtEqX8
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 ViqFlLSxHDGt 2026-09-26 3/150 2026-09-27 10:15 by 4IW0sJvtEqX8
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 ViqFlLSxHDGt 2026-09-26 3/150 2026-09-27 10:03 by 4IW0sJvtEqX8
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 GxESXJmptOtQ 2026-09-25 4/200 2026-09-27 06:44 by XgCC8uTcwILl
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 GxESXJmptOtQ 2026-09-25 3/150 2026-09-27 06:32 by XgCC8uTcwILl
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 06:05 by XgCC8uTcwILl
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 05:56 by XgCC8uTcwILl
[论文投稿] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 vQZoDrrm7mUF 2026-09-25 4/200 2026-09-27 05:56 by XgCC8uTcwILl
[找工作] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +5 vQZoDrrm7mUF 2026-09-25 5/250 2026-09-27 05:53 by XgCC8uTcwILl
[博后之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 vQZoDrrm7mUF 2026-09-25 4/200 2026-09-27 05:50 by XgCC8uTcwILl
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 vQZoDrrm7mUF 2026-09-25 4/200 2026-09-27 05:44 by XgCC8uTcwILl
[考博] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 vQZoDrrm7mUF 2026-09-25 3/150 2026-09-27 05:44 by XgCC8uTcwILl
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 vQZoDrrm7mUF 2026-09-25 6/300 2026-09-27 05:42 by XgCC8uTcwILl
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 PGTSwSC3F6nQ 2026-09-24 5/250 2026-09-25 11:19 by yhq9807
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 PGTSwSC3F6nQ 2026-09-24 7/350 2026-09-25 11:18 by yhq9807
[教师之家] 课题组招2027级博士 上海工程技术大学 激光智能制造方向 +4 oxidpl 2026-09-20 6/300 2026-09-24 20:37 by oxidpl
信息提示
请填处理意见