【问题标题】:Simplification rule not being applied properly简化规则未正确应用
【发布时间】:2013-05-03 14:33:37
【问题描述】:

我正在尝试使用此处http://raoul.koalatux.ch/sites/ladderoperator/ladder_operator.html 中的代码在 Maxima 中使用 Dirac Bra-Ket 表示法

declare(bra, nonscalar);
declare(ket, nonscalar);
dotscrules:true;
matchdeclare(m,lambda([t],featurep(t,integer)));
matchdeclare(n,lambda([t],featurep(t,integer)));

tellsimp(bra(m).ket(n), kron_delta(m,n));

对于大多数表达式都有效:

bra(0) . ket(0);
ket(1) . bra(0) . ket(0);
bra(1) . ket(1) . bra(0) . ket(0);

都正确简化了,但是

bra(1) . ket(1) . bra(0);

未能简化为 bra(0)。我怎样才能让 Maxima 简化这种情况?

【问题讨论】:

    标签: symbolic-math maxima computer-algebra-systems


    【解决方案1】:

    我认为你可以从这个开始:

    declare(bra, nonscalar);
    declare(ket, nonscalar);
    dotscrules:true;
    matchdeclare(m,lambda([t],featurep(t,integer)));
    matchdeclare(n,lambda([t],featurep(t,integer)));
    
    tellsimp(bra(m).ket(n), kron_delta(m,n));
    
    simp:false;
    matchdeclare(aa, true);
    matchdeclare(bb, true);
    matchdeclare(cc, true);
    tellsimp (aa.(bb.cc),(aa.bb).cc);
    simp:true;
    
    /* Tests */
    bra(0) . ket(0);
    ket(1) . bra(0) . ket(0);
    bra(1) . ket(1) . bra(0) . ket(0);
    bra(1) . ket(1) . bra(0);
    ket(1) . bra(1) . ket(1);
    

    【讨论】:

    • 很好,可以,但是为什么我需要重新定义.的关联性?
    • 我认为. 不是关联的。考虑这个例子[a, b]: [[1, 0], [0, 1]]; a . (b . b); (a . b) . b;
    • 来自手册:选项变量:dotassoc 默认值:true 当 dotassoc 为真时,表达式 (A.B).C 简化为 A.(B.C)。
    猜你喜欢
    • 2013-02-20
    • 2020-07-09
    • 2016-09-15
    • 2020-10-10
    • 2013-02-05
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多