public void ConstructorTest2_1()
{
var function = new NonlinearObjectiveFunction(2, x => x[0] * x[1]);
NonlinearConstraint[] constraints =
{
new NonlinearConstraint(function, x => x[0] * x[0] + x[1] * x[1],
ConstraintType.LesserThanOrEqualTo, 1.0)
};
Cobyla cobyla = new Cobyla(function, constraints);
for (int i = 0; i < cobyla.Solution.Length; i++)
cobyla.Solution[i] = 1;
Assert.IsTrue(cobyla.Minimize());
double minimum = cobyla.Value;
double[] solution = cobyla.Solution;
double sqrthalf = Math.Sqrt(0.5);
Assert.AreEqual(-0.5, minimum, 1e-10);
Assert.AreEqual(sqrthalf, solution[0], 1e-5);
Assert.AreEqual(-sqrthalf, solution[1], 1e-5);
double expectedMinimum = function.Function(cobyla.Solution);
Assert.AreEqual(expectedMinimum, minimum);
}