2

我有一个函数,它取决于假设 N 输入 x=(x1,x2,x3,x4,...,xN) 并且我有一组 M 个可能的向量 p = ( (p11,p12,p13,.. .,p1N),...,(pM1,pM2,...,pMN))

我想找到在 Julia 编程语言中实现 p[j] 中 j 的最小值。

我尝试使用最小函数(这里我设置 N=5)

minimum([x1,x2,x3,x4,x5] -> fmin(x1,x2,x3,x4,x5), p)

但它不起作用,也没有给出实现最小值的 j 值。有什么建议吗?

4

2 回答 2

1

您可以使用 splat 运算符...将向量扩展为函数参数,例如 for 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)
于 2021-04-22T16:13:37.113 回答
0

为了找到最小值,您可以执行以下操作:

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

(请注意,您会得到一个向量,因为可以有多个索引的表达式被最小化)

于 2021-04-22T16:14:07.970 回答