C#将x参数函数更改为1参数函数

时间:2016-12-05 10:32:07

标签: c# c#-4.0 c#-3.0

我在这里寻求你的帮助因为我有问题。

开始让我解释一下现状, 我有一个黄金分割算法,它允许我找到变量函数的最小值。

对于这种情况,我创建了一个委托,它返回一个值并期望一个值。

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,用于黄金选择 而其他方面

你知道我怎么能这样做吗?

感谢您的时间和对不起我的语言英语不是我的母语

0 个答案:

没有答案