【发布时间】:2014-02-05 05:37:52
【问题描述】:
我需要最小化 2D function f(x,y)。我已经使用Brent's Method 进行了1-D 最小化(类似于寻找根的二分搜索。)我认为2D 版本将是一个非常简单、常见的问题,它会有很多好的算法和库,但我没有没有找到。我正在考虑只使用Downhill Simplex from Numerical Recipes,但我认为可能有一个更简单的2D,或者一个方便的库。
有兴趣的可以看一下详情:
我实际上是在尝试找到一条最小化两个 1D 函数之间的点的线,也就是双切线。一维函数通常看起来像抛物线,它们在某个点交叉。交叉点给出了要最小化的点的 X,我想找到一条与抛物线相切的线,使 Y 在该 X 处最小化。
所以,我真的是minimizing g( f1(x1), f2(x2) )。
很遗憾,我没有关于 f1() 和 f2() 的更多信息。功能由用户选择,甚至由用户提供。如果用户提供数据,我将函数作为一组点。我可以进行插值以在线上的任何点获得一个非常好的数值导数,但仅此而已。之前的开发人员认为最小化是找到双切线的最通用方法。我仍在试图弄清楚他是否正确。
【问题讨论】:
-
您需要提供有关 f1() 和 f2() 的更多信息。 “一般看起来像抛物线”不是很精确。 Simplex 对其适用的功能非常严格。
-
这个问题陈述有问题:两条曲线的切线是唯一的,没有什么可以最小化的! (我的猜测:双切线是最小化纵坐标的线 - 对于任何 X。)
-
我编辑了一些细节。希望现在更清楚了。
标签: c++ c optimization minimization