Class FieldBracketingNthOrderBrentSolver<T extends RealFieldElement<T>>

    • Field Detail

      • MAXIMAL_AGING

        private static final int MAXIMAL_AGING
        Maximal aging triggering an attempt to balance the bracketing interval.
        See Also:
        Constant Field Values
      • maximalOrder

        private final int maximalOrder
        Maximal order.
      • functionValueAccuracy

        private final T extends RealFieldElement<T> functionValueAccuracy
        Function value accuracy.
      • absoluteAccuracy

        private final T extends RealFieldElement<T> absoluteAccuracy
        Absolute accuracy.
      • relativeAccuracy

        private final T extends RealFieldElement<T> relativeAccuracy
        Relative accuracy.
    • Constructor Detail

      • FieldBracketingNthOrderBrentSolver

        public FieldBracketingNthOrderBrentSolver​(T relativeAccuracy,
                                                  T absoluteAccuracy,
                                                  T functionValueAccuracy,
                                                  int maximalOrder)
                                           throws NumberIsTooSmallException
        Construct a solver.
        Parameters:
        relativeAccuracy - Relative accuracy.
        absoluteAccuracy - Absolute accuracy.
        functionValueAccuracy - Function value accuracy.
        maximalOrder - maximal order.
        Throws:
        NumberIsTooSmallException - if maximal order is lower than 2
    • Method Detail

      • getMaximalOrder

        public int getMaximalOrder()
        Get the maximal order.
        Returns:
        maximal order
      • getEvaluations

        public int getEvaluations()
        Get the number of evaluations of the objective function. The number of evaluations corresponds to the last call to the optimize method. It is 0 if the method has not been called yet.
        Specified by:
        getEvaluations in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>
        Returns:
        the number of evaluations of the objective function.
      • solve

        public T solve​(int maxEval,
                       RealFieldUnivariateFunction<T> f,
                       T min,
                       T max,
                       T startValue,
                       AllowedSolution allowedSolution)
                throws NullArgumentException,
                       NoBracketingException
        Solve for a zero in the given interval, start at startValue. A solver may require that the interval brackets a single zero root. Solvers that do require bracketing should be able to handle the case where one of the endpoints is itself a root.
        Specified by:
        solve in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>
        Parameters:
        maxEval - Maximum number of evaluations.
        f - Function to solve.
        min - Lower bound for the interval.
        max - Upper bound for the interval.
        startValue - Start value to use.
        allowedSolution - The kind of solutions that the root-finding algorithm may accept as solutions.
        Returns:
        a value where the function is zero.
        Throws:
        NullArgumentException - if f is null.
        NoBracketingException - if root cannot be bracketed
      • guessX

        private T guessX​(T targetY,
                         T[] x,
                         T[] y,
                         int start,
                         int end)
        Guess an x value by nth order inverse polynomial interpolation.

        The x value is guessed by evaluating polynomial Q(y) at y = targetY, where Q is built such that for all considered points (xi, yi), Q(yi) = xi.

        Parameters:
        targetY - target value for y
        x - reference points abscissas for interpolation, note that this array is modified during computation
        y - reference points ordinates for interpolation
        start - start index of the points to consider (inclusive)
        end - end index of the points to consider (exclusive)
        Returns:
        guessed root (will be a NaN if two points share the same y)