Hi, based on the question on the user-ml, I did an experiment with the NewtonRaphson solver, and I get some strange results, see below:
@Test public void testSquare() { final UnivariateDifferentiableFunction d = new UnivariateDifferentiableFunction() { public double value(double x) { return x*x; } public DerivativeStructure value(DerivativeStructure t) throws DimensionMismatchException { return t.multiply(t); } }; NewtonRaphsonSolver solver = new NewtonRaphsonSolver(); UnivariateDifferentiableFunction sin = new Sin(); double result = solver.solve(1000, sin, -4, 1); System.out.println(result + " " + sin.value(result)); // prints 12.566370614359172 -4.898587196589413E-16 // but there should be a root at -PI and 0 result = solver.solve(1000, d, -4, 1); System.out.println(result + " " + d.value(result)); // prints -7.152557373046875E-7 5.115907697472721E-13 result = solver.solve(1000, d, -1, 1); System.out.println(result + " " + d.value(result)); // TooManyEvaluationsException } For the case of sin, I expected to get either -PI or 0 as root. For x^2, the result depends also on the bounds. Is there something wrong with my test, or is the solver broken? Thomas