24小时热门版块排行榜    

查看: 2552  |  回复: 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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 93BebMhtakh前后11位开头都是大写 +4 且听虎啸 2026-08-17 5/250 2026-08-18 00:49 by 蔡棒棒菂
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +37 医学老男孩 2026-08-13 86/4300 2026-08-18 00:18 by longsantaizi
[基金申请] 感觉是下周放榜了 +6 angus9576 2026-08-17 11/550 2026-08-17 23:57 by angus9576
[基金申请] 时间戳变了,能看出什么问题? +4 基诺咪客 2026-08-17 4/200 2026-08-17 16:10 by Vivilian
[基金申请] 哪位老哥知道今年的国自然具体哪一天放榜? +12 Ldrop2023 2026-08-13 15/750 2026-08-17 15:02 by 小豌豆_发芽
[基金申请] 今天系统多次维护,明天很可能放榜! +8 zju2000 2026-08-16 9/450 2026-08-17 12:20 by lmz0216
[基金申请] 时间戳又变了8-15 +13 archvillain 2026-08-15 25/1250 2026-08-16 20:13 by zhaosm1982
[基金申请] 2027广东省杰青 +3 奶牛小黑 2026-08-15 6/300 2026-08-16 20:07 by 奶牛小黑
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +3 Tide man 2026-08-14 3/150 2026-08-16 17:47 by jurkat.1640
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 26/1300 2026-08-16 12:35 by 启萌科技
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 是这周出结果还是下周出结果? +4 yuleib84 2026-08-11 4/200 2026-08-14 23:05 by lfy8008
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 什么时候出结果,有咨询渠道??? +3 Tide man 2026-08-11 3/150 2026-08-11 17:54 by kudofaye
信息提示
请填处理意见