我希望找到x的值,它将最小化函数,其中x可以是任何正整数,直到n设置的值。例如下面的等式,
F(X)= xcos(YX ^ 2)
其中n和y是可以设置的值& X {1,2,...,N}
尝试使用优化功能,但似乎无法到达任何地方。
如果这是一个非常基本的问题我很抱歉,我刚刚开始,所以我对R的理解并不是很好。
由于
答案 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)
来说,这将是一个合理的启发式算法。