Class BrentSolver
java.lang.Object
org.apache.commons.numbers.rootfinder.BrentSolver
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
-
Constructor Summary
ConstructorsConstructorDescriptionBrentSolver(double relativeAccuracy, double absoluteAccuracy, double functionValueAccuracy) Construct a solver. -
Method Summary
Modifier and TypeMethodDescriptiondoublefindRoot(DoubleUnaryOperator func, double min, double max) Search the function's zero within the given interval.doublefindRoot(DoubleUnaryOperator func, double min, double initial, double max) Search the function's zero within the given interval, starting from the given estimate.
-
Constructor Details
-
BrentSolver
Construct a solver.- Parameters:
relativeAccuracy- Relative accuracy.absoluteAccuracy- Absolute accuracy.functionValueAccuracy- Function value accuracy.
-
-
Method Details
-
findRoot
Search the function's zero within the given interval.- Parameters:
func- Function to solve.min- Lower bound.max- Upper bound.- Returns:
- the root.
- Throws:
IllegalArgumentException- ifmin > max.IllegalArgumentException- if the given interval does not bracket the root.
-
findRoot
Search the function's zero within the given interval, starting from the given estimate.- Parameters:
func- Function to solve.min- Lower bound.initial- Initial guess.max- Upper bound.- Returns:
- the root.
- Throws:
IllegalArgumentException- ifmin > maxorinitialis not in the[min, max]interval.IllegalArgumentException- if the given interval does not bracket the root.
-