Package org.hipparchus.analysis.solvers
Class BrentSolver
- java.lang.Object
-
- org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver<UnivariateFunction>
-
- org.hipparchus.analysis.solvers.AbstractUnivariateSolver
-
- org.hipparchus.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. Thesolve
method returns a zerox
of the functionf
in the given interval[a, b]
to within a tolerance2 eps abs(x) + t
whereeps
is the relative accuracy andt
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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected double
doSolve()
Method for implementing actual optimization algorithms in derived classes.-
Methods inherited from class org.hipparchus.analysis.solvers.BaseAbstractUnivariateSolver
computeObjectiveValue, getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getMax, 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.hipparchus.analysis.solvers.BaseUnivariateSolver
getAbsoluteAccuracy, getEvaluations, getFunctionValueAccuracy, getRelativeAccuracy, solve, solve, solve
-
-
-
-
Constructor Detail
-
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 Detail
-
doSolve
protected double doSolve() throws MathIllegalArgumentException, MathIllegalStateException
Method for implementing actual optimization algorithms in derived classes.- Specified by:
doSolve
in classBaseAbstractUnivariateSolver<UnivariateFunction>
- Returns:
- the root.
- Throws:
MathIllegalArgumentException
- if the initial search interval does not bracket a root and the solver requires it.MathIllegalStateException
- if the maximal number of evaluations is exceeded.
-
-