commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Neidhart <thomas.neidh...@gmail.com>
Subject [math] NewtonRaphsonSolver
Date Tue, 21 May 2013 15:01:06 GMT
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

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message