【问题标题】:Is there a Kronecker delta in Julia?朱莉娅有克罗内克三角洲吗?
【发布时间】:2021-03-10 20:18:43
【问题描述】:

如果我在 Julia 中声明了一些点 (p_1,...,p_n)。克罗内克三角洲(f_i(p_j)=1 if i=jf_i(p_j)=0 if i != j)是否有一些函数或算法

这会很有帮助。

非常感谢。

【问题讨论】:

  • 只是δ = Int∘==?哎呀,你甚至可能不需要Int

标签: julia


【解决方案1】:

如果您想要克罗内克三角洲函数,您可以使用==(x,y) 函数(如 cmets 中的@mbauman 所示)。

julia> δ(x,y) = ==(x,y)
δ (generic function with 1 method)

julia> δ(1,1)
true

julia> δ(1,2)
false

请注意,这将返回 truefalse 而不是 10,但前者本质上等于后者并且行为方式相同,例如 ==(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
【解决方案2】:

对于任意数量的参数,您可以这样做:

δ(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

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 2014-12-31
    • 2017-01-15
    • 2016-02-18
    • 2021-11-04
    相关资源
    最近更新 更多