【发布时间】:2019-06-27 05:48:21
【问题描述】:
给定一个连续但未知的函数f(x),如何通过尽可能少地调用f(x) 来找到它在闭区间内达到的最大值?
函数未知,所以我不能明确地取导数。检查值的唯一方法是调用它。 f(x)在给定区间内只有一个临界点,但最大值可以在端点处。
我不需要超高精度。比方说,如果方法超过一定的迭代次数,它将停止并返回当前的最大值。
【问题讨论】:
-
您实际上可以取导数,因为您可以计算(估计)导数。
-
函数可以有多个局部极值还是单峰?
-
@SergeyMell 只有一个局部极值
-
给定“只有一个局部极值”,假设极值是局部最大值,那么简单的二进制搜索就足够了。如果它是一个本地最小值,请确保在搜索中包含区间端点。
标签: javascript algorithm function optimization max