Class BaseSecantSolver

    • Field Detail

      • DEFAULT_ABSOLUTE_ACCURACY

        protected static final double DEFAULT_ABSOLUTE_ACCURACY
        Default absolute accuracy.
        See Also:
        Constant Field Values
    • Constructor Detail

      • BaseSecantSolver

        protected BaseSecantSolver​(double absoluteAccuracy,
                                   BaseSecantSolver.Method method)
        Construct a solver.
        Parameters:
        absoluteAccuracy - Absolute accuracy.
        method - Secant-based root-finding method to use.
      • BaseSecantSolver

        protected BaseSecantSolver​(double relativeAccuracy,
                                   double absoluteAccuracy,
                                   BaseSecantSolver.Method method)
        Construct a solver.
        Parameters:
        relativeAccuracy - Relative accuracy.
        absoluteAccuracy - Absolute accuracy.
        method - Secant-based root-finding method to use.
      • BaseSecantSolver

        protected BaseSecantSolver​(double relativeAccuracy,
                                   double absoluteAccuracy,
                                   double functionValueAccuracy,
                                   BaseSecantSolver.Method method)
        Construct a solver.
        Parameters:
        relativeAccuracy - Maximum relative error.
        absoluteAccuracy - Maximum absolute error.
        functionValueAccuracy - Maximum function value error.
        method - Secant-based root-finding method to use
    • Method Detail

      • solve

        public double solve​(int maxEval,
                            UnivariateFunction f,
                            double min,
                            double max,
                            AllowedSolution allowedSolution)
        Solve for a zero in the given interval. 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 BracketedUnivariateSolver<UnivariateFunction>
        Parameters:
        maxEval - Maximum number of evaluations.
        f - Function to solve.
        min - Lower bound for the interval.
        max - Upper bound for the interval.
        allowedSolution - The kind of solutions that the root-finding algorithm may accept as solutions.
        Returns:
        A value where the function is zero.
      • solve

        public double solve​(int maxEval,
                            UnivariateFunction f,
                            double min,
                            double max,
                            double startValue,
                            AllowedSolution allowedSolution)
        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 BracketedUnivariateSolver<UnivariateFunction>
        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.
      • solve

        public double solve​(int maxEval,
                            UnivariateFunction f,
                            double min,
                            double max,
                            double startValue)
        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 BaseUnivariateSolver<UnivariateFunction>
        Overrides:
        solve in class BaseAbstractUnivariateSolver<UnivariateFunction>
        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.
        Returns:
        a value where the function is zero.
      • solveInterval

        public BracketedUnivariateSolver.Interval solveInterval​(int maxEval,
                                                                UnivariateFunction f,
                                                                double min,
                                                                double max,
                                                                double startValue)
                                                         throws MathIllegalArgumentException,
                                                                MathIllegalStateException
        Solve for a zero in the given interval and return a tolerance interval surrounding the root.

        It is required that the starting interval brackets a root or that the function value at either end point is 0.0.

        Specified by:
        solveInterval in interface BracketedUnivariateSolver<UnivariateFunction>
        Parameters:
        maxEval - Maximum number of evaluations.
        f - Function to solve.
        min - Lower bound for the interval.
        max - Upper bound for the interval. Must be greater than min.
        startValue - start value to use. Must be in the interval [min, max].
        Returns:
        an interval [ta, tb] such that for some t in [ta, tb] f(t) == 0.0 or has a step wise discontinuity that crosses zero. Both end points also satisfy the convergence criteria so either one could be used as the root. That is the interval satisfies the condition (| tb - ta | <= absolute accuracy + max(ta, tb) * relative accuracy) or ( max(|f(ta)|, |f(tb)|) <= BaseUnivariateSolver.getFunctionValueAccuracy()) or there are no floating point numbers between ta and tb. The width of the interval (tb - ta) may be zero.
        Throws:
        MathIllegalArgumentException - if the arguments do not satisfy the requirements specified by the solver.
        MathIllegalStateException - if the allowed number of evaluations is exceeded.