我在这里寻求你的帮助因为我有问题。
开始让我解释一下现状, 我有一个黄金分割算法,它允许我找到变量函数的最小值。
对于这种情况,我创建了一个委托,它返回一个值并期望一个值。
delegate double FunctionCaller(double value);
private double GoldenSectionSearch(double PointA, double PointB,double PointC ,FunctionCaller fkt,double tol)
{
//find minima
//calls function at some point
}
之后我可以借助一些测试功能调用我的函数 喜欢
private double quadrat(double x) { return x * x; }
到目前为止一切顺利,但现在我想找到多维函数的最小值,如
private double function_2D (double x, double y){ return ((x-20)*(x-20)) +((y-10)*(y-10)) +10;
如您所见,目前的算法无法处理此功能。我不想为每个x维函数创建一个新算法。所以我想我可以简单地拆分参数。
例如我设置" x" function_2D的值作为一个固定值,而不是让它贯穿黄金分割函数。在那之后,我对" y"做同样的事情。并比较差异,这样我就可以得到函数的最小值。
但是我必须"转换"将x维函数转换为1维函数,将其他参数替换为固定值。
作为一个例子,我可以调用我的function_2D,其中x为5,用于黄金选择 而其他方面
你知道我怎么能这样做吗?
感谢您的时间和对不起我的语言英语不是我的母语