【发布时间】:2021-03-10 20:18:43
【问题描述】:
如果我在 Julia 中声明了一些点 (p_1,...,p_n)。克罗内克三角洲(f_i(p_j)=1 if i=j 和f_i(p_j)=0 if i != j)是否有一些函数或算法
这会很有帮助。
非常感谢。
【问题讨论】:
-
只是
δ = Int∘==?哎呀,你甚至可能不需要Int。
标签: julia
如果我在 Julia 中声明了一些点 (p_1,...,p_n)。克罗内克三角洲(f_i(p_j)=1 if i=j 和f_i(p_j)=0 if i != j)是否有一些函数或算法
这会很有帮助。
非常感谢。
【问题讨论】:
δ = Int∘==?哎呀,你甚至可能不需要Int。
标签: julia
如果您想要克罗内克三角洲函数,您可以使用==(x,y) 函数(如 cmets 中的@mbauman 所示)。
julia> δ(x,y) = ==(x,y)
δ (generic function with 1 method)
julia> δ(1,1)
true
julia> δ(1,2)
false
请注意,这将返回 true 或 false 而不是 1 和 0,但前者本质上等于后者并且行为方式相同,例如 ==(1,1) * 2 将返回 2 .事实上,true isa Integer 在 Julia。
另一种选择可能是使用 I 内置在 Julia 中的(惰性)身份矩阵(即LinearAlgebra):
julia> using LinearAlgebra
julia> I[1,1]
true
julia> I[1,2]
false
【讨论】:
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) := true:
δ(x, y) = ==(x, y)
function δ(z...)
for i in z
!δ(z[1], i) && return false
end
return true
end
【讨论】: