Is there a Kronecker delta in Julia?

Viewed 682

If I have some declared some Points in Julia (p_1,...,p_n). Is there some function or algorithm for kronecker delta (f_i(p_j)=1 if i=j and f_i(p_j)=0 if i != j)

It would be very helpful.

Thank you so much.

2 Answers

If you want a kronecker delta function you can use the ==(x,y) function (as indicated by @mbauman in the comments).

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

julia> δ(1,1)
true

julia> δ(1,2)
false

Note that this returns true or false instead of 1 and 0 but the former are essentially equal to the latter and will behave in the same way, for example ==(1,1) * 2 will give 2. In fact, true isa Integer in Julia.

Another option might be to use I the (lazy) identity matrix built into Julia (LinearAlgebra that is):

julia> using LinearAlgebra

julia> I[1,1]
true

julia> I[1,2]
false

For an arbitrary number of arguments, you can do:

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

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

or if you make the convention that δ(x) := true:

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

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