Class BrentSolver


  • public class BrentSolver
    extends Object
    This class implements the Brent algorithm for finding zeros of real univariate functions. The function should be continuous but not necessarily smooth. The solve method returns a zero x of the function f in the given interval [a, b] to within a tolerance 2 eps abs(x) + t where eps is the relative accuracy and t is the absolute accuracy.

    The given interval must bracket the root.

    The reference implementation is given in chapter 4 of

    Algorithms for Minimization Without Derivatives, Richard P. Brent, Dover, 2002
    • Constructor Detail

      • BrentSolver

        public BrentSolver​(double relativeAccuracy,
                           double absoluteAccuracy,
                           double functionValueAccuracy)
        Construct a solver.
        Parameters:
        relativeAccuracy - Relative accuracy.
        absoluteAccuracy - Absolute accuracy.
        functionValueAccuracy - Function value accuracy.
    • Method Detail

      • findRoot

        public double findRoot​(DoubleUnaryOperator func,
                               double min,
                               double initial,
                               double max)
        Search the function's zero within the given interval, starting from the given estimate.
        Parameters:
        func - Function to solve.
        min - Lower bound.
        initial - Initial guess.
        max - Upper bound.
        Returns:
        the root.
        Throws:
        IllegalArgumentException - if min > max or initial is not in the [min, max] interval.
        IllegalArgumentException - if the given interval does not bracket the root.