Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将x参数函数改为1参数函数_C#_C# 4.0_C# 3.0 - Fatal编程技术网

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

C#将x参数函数改为1参数函数,c#,c#-4.0,c#-3.0,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)

我在这里请求你的帮助,因为我有问题

首先让我解释一下目前的情况, 我有一个黄金分割算法,它允许我找到一个变量函数的极小值

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

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 function_2D (double x, double y){ return  ((x-20)*(x-20)) +((y-10)*(y-10)) +10;
正如您所看到的,我目前的算法无法处理此函数。我不想为每个x维函数创建一个新的算法。所以我想我可以简单地拆分参数

例如,我将函数_2D的“x”值设置为实数,然后让它通过黄金分割函数运行。之后,我对“y”做同样的处理,比较差异,这样我就可以得到函数的极小值

但为此,我必须将x维函数“转换”为一维函数,并将其他参数替换为固定值。

例如,对于goldenselection,我可以调用x为5的函数_2D 另一方面呢

你知道我怎么做吗


谢谢你的时间,对不起我的语言英语不是我的母语,我不确定你想做什么。你的标题说你想要一个单参数函数。在你最后的句子中,你说你想要一个“一维”函数。老实说,我真的不明白你在找什么?你想有一个函数,并且想用多少个参数来调用它吗?如果你想用x作为5来调用
函数_2D
,你想用什么来传递y?如果你的意思是“我想修正一个参数,让另一个参数通过黄金分割搜索算法变化”,然后将函数包装到另一个委托中:
Func function\u 2D\u fixed=x=>function\u 2D(x,5)
@LasseV.Karlsen我喜欢使用第二个委托的想法,但它仍然是一个需要两个参数的委托,但问题是我想给我的goldension一个带有一个参数的函数。我不确定你想做什么。你的标题说你想要一个单参数函数。在你最后的句子中,你说你想要一个“一维”函数。老实说,我真的不明白你在找什么?你想有一个函数,并且想用多少个参数来调用它吗?如果你想用x作为5来调用
函数_2D
,你想用什么来传递y?如果你的意思是“我想修正一个参数,让另一个参数通过黄金分割搜索算法变化”,然后将函数包装到另一个委托中:
Func function\u 2D\u fixed=x=>function\u 2D(x,5)
@LasseV.Karlsen我喜欢使用第二个委托的想法,但它仍然是一个需要两个参数的委托,但问题是我想给我的goldension一个带有一个参数的函数。
 private double function_2D (double x, double y){ return  ((x-20)*(x-20)) +((y-10)*(y-10)) +10;