Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
191 views
in Technique[技术] by (71.8m points)

c# - How to find a minimum for my function with Math.Net NewtonMinimizer?

I'm struggling with Math.Net Minimum functions. I have this function:

public double minim(DenseVector dv)
{
    double a = dv[0];
    double b = dv[1];  
    ...
    return r;
}

I need to find the minimal return value for the two doubles in dv (2D search). I understand that I can do that with Math.NET's NewtonOptimizer. I tried this:

 var param = new DenseVector(new double[] { x,y });
 var f1 = new Func<Vector<double>, double>(v => minim(param));
 var obj = ObjectiveFunction.Value(f1);
 var solver = new NewtonMinimizer(ftol, 1000);
 var result = solver.FindMinimum(obj, param);

but I get an Exception, saying

"Gradient not supported in objective function, but required for Newton minimization."

Obviously minim is missing something. What does a "gradient" look like? Maybe an example?

addition: My function to be minimized has no derivative: it is a rather unpredictable function. To be more precise: it has the form of a catenary, with various loads hanging from it.

question from:https://stackoverflow.com/questions/65936291/how-to-find-a-minimum-for-my-function-with-math-net-newtonminimizer

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...