我有一个函数,它取决于N个输入x=(x1,x2,x3,x4,…,xN(,我有一组M个可能的向量p=((p11,p12,p13,…,p1N(,…,(pM1,pM2,…,pMN(
我想找到最小值的值,其中p[j]中的j是Julia编程语言中实现的最小值。
我试着使用最小函数(这里我设置N=5(
minimum([x1,x2,x3,x4,x5] -> fmin(x1,x2,x3,x4,x5), p)
但是它不起作用,并且它也不给出实现最小值的j值。有什么建议吗?
您可以使用splat运算符...
将向量扩展到函数参数中,例如,对于N=3
:
function f(x,y,z)
return x+y+z
end
p = [[1,1,1], [2,2,2], [3,3,3]]
minimum(vector -> f(vector...), p)
为了找到你能做的最小值:
julia> fmin(x1, x2, x3) = x1+x2+x3
fmin (generic function with 1 method)
julia> p = [(1,1,1), (1,2,3), (-1,-2,10), (2,3,0)];
julia> minp = minimum(v -> fmin(v...), p)
3
可以通过以下方式找到最小值:
julia> findall(v -> fmin(v...) == minp, p)
1
(注意,你得到了一个向量,因为可能有多个索引的表达式被最小化(