2

两个整数的 kronecker 符号n,m定义为1ifn=m和else 0

枫木中是否有内置的克罗内克符号或实现它的简单方法?

抱歉,如果我忽略了一些微不足道的事情,那么枫叶主页目前已关闭,谷歌没有返回任何有用的信息。

编辑:我刚刚在这里发现了一些有用的东西:

restart:
delta := table(symmetric,identity);
simplify(delta[1,2]);
simplify(delta[1,1]);

        delta := TABLE(symmetric, identity, [])
                           0
                           1

然而,它似乎并没有简化带有符号的琐碎表达式:

simplify(delta[n,n]);
simplify(delta[n,n+1]);

                      delta[n, n]
                    delta[n, n + 1]

人们期望分别获得10的地方。

编辑2:我也这样尝试过:

restart:
delta := proc(n,m):
    if n=m then 1 else 0 fi;
end;
delta(1,2);
delta(1,1);
delta(n,n);

0
1
1

但是,这对于符号也很有效,因为

delta(n,m);

返回0

4

3 回答 3

3

试试这个 delta:= (m,n)-> `if`(evalb(m < n)::truefalse, `if`(m=n,1,0), 'procname'(m,n)) ;

于 2013-03-13T20:31:05.063 回答
1

Physics包中有一个名为KroneckerDelta的内置函数。试试这个

with(Physics):
KroneckerDelta[i,j]; 

其中 i 和 j 取整数值。当 i=j 时给出 1,当 i =/= j 时给出 0。

于 2016-03-30T19:44:54.630 回答
0

我更喜欢这样的东西:delta:=(mu,nu)->eval(evalb(mu=nu),[true=1,false=0])

于 2014-01-10T14:16:00.283 回答