Julia 朱莉娅有克罗内克三角洲吗?

Julia 朱莉娅有克罗内克三角洲吗?,julia,Julia,如果我在Julia(p_1,…,p_n)中声明了一些点。kronecker delta是否有一些函数或算法(f_i(p_j)=1如果i=j和f_i(p_j)=0如果i!=j) 这将非常有帮助 非常感谢。如果您想要kronecker delta函数可以使用==(x,y)函数(如注释中的@mbauman所示) 请注意,这将返回true或false,而不是1和0,但前者本质上与后者相等,其行为方式相同,例如==(1,1)*2将给出2。事实上,true在Julia中是一个整数 另一种选择可能是使用内置于

如果我在Julia(p_1,…,p_n)中声明了一些点。kronecker delta是否有一些函数或算法(
f_i(p_j)=1如果i=j
f_i(p_j)=0如果i!=j

这将非常有帮助


非常感谢。

如果您想要kronecker delta函数可以使用
==(x,y)
函数(如注释中的@mbauman所示)

请注意,这将返回
true
false
,而不是
1
0
,但前者本质上与后者相等,其行为方式相同,例如
==(1,1)*2
将给出
2
。事实上,
true在Julia中是一个整数

另一种选择可能是使用内置于Julia(
LinearAlgebra
即)中的(惰性)身份矩阵


对于任意数量的参数,可以执行以下操作:

δ(x, y) = ==(x, y)

function δ(x, y, z...)
    !δ(x, y) && return false
    for i in z
        !δ(x, i) && return false
    end
    return true
end
或者如果你做了一个约定,
δ(x):=true

δ(x, y) = ==(x, y)

function δ(z...)
    for i in z
        !δ(z[1], i) && return false
    end
    return true
end

简单地
δ=Int∘==?你甚至可能不需要
Int
。如何将其扩展到任意数量的参数
n
δ(x, y) = ==(x, y)

function δ(x, y, z...)
    !δ(x, y) && return false
    for i in z
        !δ(x, i) && return false
    end
    return true
end
δ(x, y) = ==(x, y)

function δ(z...)
    for i in z
        !δ(z[1], i) && return false
    end
    return true
end