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

# Class BrentSolver

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

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

public class BrentSolver extends AbstractUnivariateSolver
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

See Also:
  - `BaseAbstractUnivariateSolver`

## Constructor Summary

Constructors
Constructor
Description
`BrentSolver()`
Construct a solver with default absolute accuracy (1e-6).
`BrentSolver(double absoluteAccuracy)`
Construct a solver.
`BrentSolver(double relativeAccuracy, double absoluteAccuracy)`
Construct a solver.
`BrentSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy)`
Construct a solver.

## Method Summary

Modifier and Type
Method
Description
`protected double`
`doSolve()`
Method for implementing actual optimization algorithms in derived classes.

### 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

### BrentSolver

public BrentSolver()
Construct a solver with default absolute accuracy (1e-6).

### BrentSolver

public BrentSolver(double absoluteAccuracy)
Construct a solver.

Parameters:
  `absoluteAccuracy` - Absolute accuracy.

### BrentSolver

public BrentSolver(double relativeAccuracy, double absoluteAccuracy)
Construct a solver.

Parameters:
  `relativeAccuracy` - Relative accuracy.
  `absoluteAccuracy` - Absolute accuracy.

### BrentSolver

public BrentSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy)
Construct a solver.

Parameters:
  `relativeAccuracy` - Relative accuracy.
  `absoluteAccuracy` - Absolute accuracy.
  `functionValueAccuracy` - Function value accuracy.
See Also:
  - `BaseAbstractUnivariateSolver(double,double,double)`

## Method Details

### doSolve

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

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