Package org.apache.commons.math3.analysis.solvers

# Class BracketingNthOrderBrentSolver

java.lang.Object
org.apache.commons.math3.analysis.solvers.BaseAbstractUnivariateSolver<UnivariateFunction>
org.apache.commons.math3.analysis.solvers.AbstractUnivariateSolver
org.apache.commons.math3.analysis.solvers.BracketingNthOrderBrentSolver

All Implemented Interfaces:
  `BaseUnivariateSolver<UnivariateFunction>`, `BracketedUnivariateSolver<UnivariateFunction>`, `UnivariateSolver`

public class BracketingNthOrderBrentSolver extends AbstractUnivariateSolver implements BracketedUnivariateSolver<UnivariateFunction>
This class implements a modification of the Brent algorithm.

The changes with respect to the original Brent algorithm are:

- the returned value is chosen in the current interval according to user specified `AllowedSolution`,
- the maximal order for the invert polynomial root search is user-specified instead of being invert quadratic only

The given interval must bracket the root.

## Constructor Summary

Constructors
Constructor
Description
`BracketingNthOrderBrentSolver()`
Construct a solver with default accuracy and maximal order (1e-6 and 5 respectively)
`BracketingNthOrderBrentSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy, int maximalOrder)`
Construct a solver.
`BracketingNthOrderBrentSolver(double relativeAccuracy, double absoluteAccuracy, int maximalOrder)`
Construct a solver.
`BracketingNthOrderBrentSolver(double absoluteAccuracy, int maximalOrder)`
Construct a solver.

## Method Summary

Modifier and Type
Method
Description
`protected double`
`doSolve()`
Method for implementing actual optimization algorithms in derived classes.
`int`
`getMaximalOrder()`
Get the maximal order.
`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`.
`double`
`solve(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution)`
Solve for a zero in the given interval.

### Methods inherited from class org.apache.commons.math3.analysis.solvers.BaseAbstractUnivariateSolver

`computeObjectiveValue, getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMax, getMaxEvaluations, getMin, getRelativeAccuracy, getStartValue, incrementEvaluationCount, isBracketing, isSequence, setup, solve, solve, solve, verifyBracketing, verifyInterval, verifySequence`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.apache.commons.math3.analysis.solvers.BaseUnivariateSolver

`getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMaxEvaluations, getRelativeAccuracy, solve, solve, solve`

## Constructor Details

### BracketingNthOrderBrentSolver

public BracketingNthOrderBrentSolver()
Construct a solver with default accuracy and maximal order (1e-6 and 5 respectively)

### BracketingNthOrderBrentSolver

public BracketingNthOrderBrentSolver(double absoluteAccuracy, int maximalOrder) throws NumberIsTooSmallException
Construct a solver.

Parameters:
  `absoluteAccuracy` - Absolute accuracy.
  `maximalOrder` - maximal order.
Throws:
  `NumberIsTooSmallException` - if maximal order is lower than 2

### BracketingNthOrderBrentSolver

public BracketingNthOrderBrentSolver(double relativeAccuracy, double absoluteAccuracy, int maximalOrder) throws NumberIsTooSmallException
Construct a solver.

Parameters:
  `relativeAccuracy` - Relative accuracy.
  `absoluteAccuracy` - Absolute accuracy.
  `maximalOrder` - maximal order.
Throws:
  `NumberIsTooSmallException` - if maximal order is lower than 2

### BracketingNthOrderBrentSolver

public BracketingNthOrderBrentSolver(double relativeAccuracy, double absoluteAccuracy, double 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 Details

### getMaximalOrder

public int getMaximalOrder()
Get the maximal order.

Returns:
  maximal order

### doSolve

protected double doSolve() throws TooManyEvaluationsException, NumberIsTooLargeException, NoBracketingException
Method for implementing actual optimization algorithms in derived classes.

Specified by:
  `doSolve` in class `BaseAbstractUnivariateSolver<UnivariateFunction>`
Returns:
  the root.
Throws:
  `TooManyEvaluationsException` - if the maximal number of evaluations is exceeded.
  `NoBracketingException` - if the initial search interval does not bracket a root and the solver requires it.
  `NumberIsTooLargeException`

### solve

public double solve(int maxEval, UnivariateFunction f, double min, double max, AllowedSolution allowedSolution) throws TooManyEvaluationsException, NumberIsTooLargeException, NoBracketingException
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.
Throws:
  `TooManyEvaluationsException` - if the allowed number of evaluations is exceeded.
  `NumberIsTooLargeException`
  `NoBracketingException`

### solve

public double solve(int maxEval, UnivariateFunction f, double min, double max, double startValue, AllowedSolution allowedSolution) throws TooManyEvaluationsException, NumberIsTooLargeException, 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 `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.
Throws:
  `TooManyEvaluationsException` - if the allowed number of evaluations is exceeded.
  `NumberIsTooLargeException`
  `NoBracketingException`