В Julia 1.0.5 у меня есть функция f(x::Vector{<:Real})
, определенная как
f(x::Vector{<:Real}) = (x[1] - 2)^2 + ( x[2] - 1 )^2
Подпись такая, потому что я хотел бы использовать ее с пакетом ForwardDiff
, и она работает с этим просто отлично. Я даю функцию ForwardDiff.gradient
, и все работает как шарм.
Однако я также хотел бы сделать некоторые визуализации с PyPlot
, используя эту же функцию f
. А именно, я хотел бы нарисовать его контур с помощью contourf
. Для этой цели я построил два вектора X::Vector{<:Real}
и Y::Vector{<:Real}
и хотел бы вызвать с ними одну и ту же функцию f
, чтобы получить контур.
Однако выполнение вызова f.([X, Y])
не транслировать векторы, как хотелось бы, так как я получаю ошибку
LoadError: MethodError: no method matching (::getfield(Main, Symbol("#f#1044")))(::Int64)
Closest candidates are:
f(!Matched::Array{#s25,1} where #s25<:Real)
Это, конечно, мешает мне использовать функцию contourf
, так как для нее нужны значения f
на 2D-сетке .
Нужно ли мне определять совершенно другое f(x::Vector{<:Real}, y::Vector{<:Real})
, чтобы можно было строить контур так, как мне хотелось бы, или есть альтернатива, где я могу избежать этого?