Julia 朱莉娅有克罗内克三角洲吗?
如果我在Julia(p_1,…,p_n)中声明了一些点。kronecker delta是否有一些函数或算法(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中是一个整数 另一种选择可能是使用内置于
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