How could I define this function in Julia?
f(x) = \begin{cases} x^2 &\text {x < 2} \\ (x-2)(x-4) &\text {otherwise}\end{cases}
How could I define this function in Julia?
f(x) = \begin{cases} x^2 &\text {x < 2} \\ (x-2)(x-4) &\text {otherwise}\end{cases}
function f(x)
if x < 2
return x^2
else
return (x-2)*(x-4)
end
end
?
Thank you. But I said vectorized and differentiable. Its input must be a vector or matrix.
Linking related thread that seems to address the differentiable part.
As for the vectorization, f.(x)
should work above?
just add . to make it working on mult-dim data (or just use f.())
using Zygote
function f(x)
if all(x .< 2)
return x.^2
else
return (x.-2).*(x.-4)
end
end
jacobian(f, [1.0, 2.0, 3.0])
I do not understand what you want. For me this is ok :
julia> function f(x)
if x < 2
return x^2
else
return (x-2)*(x-4)
end
end
f (generic function with 1 method)
julia> x = [1,2,3]
3-element Vector{Int64}:
1
2
3
julia> f.(x)
3-element Vector{Int64}:
1
0
-1
julia> using ForwardDiff
julia> ForwardDiff.derivative.(f,x)
3-element Vector{Int64}:
2
-2
0
julia>
This is unclear to me, as the condition “x > 2” is undefined for a vector or matrix.