寻找凹函数可接受极限的优化算法
Optimization algorithm to find acceptable limits of a concave function
我有一个黑盒函数 f(x)
符合以下条件:
- 一定范围内concave
- 是continuous
在 Python 内,我希望得到一个算法,它可以用最少的步骤为我提供位置 x0
、x1
,其中 f
大于或等于 a
.
可以假定存在 x
的值,其中 f(x)
比 a
更 greater/equal。
查看此图片以可视化问题:
所以我的问题是:
- 这种算法的名称是什么,如果有的话(比如有
bubble sort algorithm
当任务是对列表进行排序时)?
- 解决我的问题的算法是什么样的?
- 或者:是否有用于此类任务的标准 Python 库?
寻找函数与 x 轴相交的点是 zero-finding
或 x 轴截距查找。您可以定义一个新函数 g(x) = f(x) - a 然后找到 g(x) 函数的 'zeros'。
找到截距的最简单方法是找到 g(xa) < 0 和 g(xb) > 0 的 xa 和 xb。然后在它们之间选择一个 xc 并继续使用 xc 和 xa 或 xb 之一(与 xc 的符号相反)。再次重复这些步骤,直到 x 之间的间隔小到可以考虑 'found'.
我有一个黑盒函数 f(x)
符合以下条件:
- 一定范围内concave
- 是continuous
在 Python 内,我希望得到一个算法,它可以用最少的步骤为我提供位置 x0
、x1
,其中 f
大于或等于 a
.
可以假定存在 x
的值,其中 f(x)
比 a
更 greater/equal。
查看此图片以可视化问题:
所以我的问题是:
- 这种算法的名称是什么,如果有的话(比如有
bubble sort algorithm
当任务是对列表进行排序时)? - 解决我的问题的算法是什么样的?
- 或者:是否有用于此类任务的标准 Python 库?
寻找函数与 x 轴相交的点是 zero-finding
或 x 轴截距查找。您可以定义一个新函数 g(x) = f(x) - a 然后找到 g(x) 函数的 'zeros'。
找到截距的最简单方法是找到 g(xa) < 0 和 g(xb) > 0 的 xa 和 xb。然后在它们之间选择一个 xc 并继续使用 xc 和 xa 或 xb 之一(与 xc 的符号相反)。再次重复这些步骤,直到 x 之间的间隔小到可以考虑 'found'.