मैं होगा की तरह कम करने के लिए निम्न कार्य
की कमी के साथ
में C#. मैं इसे करने की कोशिश की के साथ Math.Net'एस न्यूटन की विधि, लेकिन मैं नहीं कर सकते हैं बाहर आंकड़ा कैसे यह करने के लिए । मैं कैसे कर सकते हैं कम से कम समारोह प्रोग्राम के रूप में C# के लिए दिया $F_1, F_2$?
अद्यतन: टिप्पणी के बाद से @MinosIllyrien मैंने कोशिश की है के बाद, लेकिन मैं नहीं मिल सिंटेक्स:
_f1 = 0.3; // Global fields.
_f2 = 0.7;
var minimizer = new NewtonMinimizer(1E-4, 100, false);
var objectiveFunction = ObjectiveFunction.ScalarDerivative(FunctionToMinimize, GradientOfFunctionToMinimize);
var firstGuess = CreateVector.DenseOfArray(new[] {0.5});
var minimalWeight1 = minimizer.FindMinimum(objectiveFunction, firstGuess).MinimizingPoint;
private double GradientOfFunctionToMinimize(double w1){
return _f1 - (w1 * _f2) / Math.Sqrt(1 - Math.Pow(w1, 2));
}
private double FunctionToMinimize(double w1){
return w1 * _f1 + Math.Sqrt(1 - Math.Pow(w1, 2)) * _f2;
}
यह काम नहीं करता है, क्योंकि FindMinimum विधि की आवश्यकता है IObjectiveFunction के रूप में समारोह और नहीं IScalarObjectiveFunction...
अद्यतन 2: मैं करने की कोशिश की एक समाधान से गूगल:
var solver = Solver.CreateSolver("GLOP");
Variable w1 = solver.MakeNumVar(0.0, double.PositiveInfinity, "w1");
Variable w2 = solver.MakeNumVar(0.0, double.PositiveInfinity, "w2");
solver.Add(Math.Sqrt(w1*w1 + w2*w2) == 1);
यह त्रुटि फेंकता है कि *-ऑपरेटर इस्तेमाल नहीं किया जा सकता के लिए "परिवर्तनीय" और "चर". किसी को किसी भी विचार है?