找到一个值以使用R最小化方程

时间:2017-10-15 09:12:46

标签: r

我希望找到x的值,它将最小化函数,其中x可以是任何正整数,直到n设置的值。例如下面的等式,

F(X)= xcos(YX ^ 2)

其中n和y是可以设置的值& X {1,2,...,N}

尝试使用优化功能,但似乎无法到达任何地方。

如果这是一个非常基本的问题我很抱歉,我刚刚开始,所以我对R的理解并不是很好。

由于

1 个答案:

答案 0 :(得分:1)

除非n非常大,否则自然要做的就是计算函数值的向量,使用min找到它的最小值,并使用which来查找它发生了:

> n <- 100000
> y <- 12345
> x <- 1:n
> v <- x*cos(y*x)
> which(v == min(v))
[1] 99986
> v[99986]
[1] -99979.1

如果f(x)未进行矢量化,则必须使用sapply来定义v

v <- sapply(x,f)

如果n很大,则上述方法可能不充分。如果没有f的特殊假设,就不会有任何替代方案,但如果您知道这一点,例如有一个独特的局部最小值(这也是你寻求的全局最小值)然后可以使用二分法。您还可以执行诸如将[1,n]中的实数最小化然后舍入为整数的操作。对于任何相当温和的连续f(x)来说,这将是一个合理的启发式算法。