T - the type of the field elementspublic class FieldBracketingNthOrderBrentSolver<T extends RealFieldElement<T>> extends java.lang.Object implements BracketedRealFieldUnivariateSolver<T>
The changes with respect to the original Brent algorithm are:
AllowedSolutionThe given interval must bracket the root.
| Modifier and Type | Field and Description |
|---|---|
private T |
absoluteAccuracy
Absolute accuracy.
|
private IntegerSequence.Incrementor |
evaluations
Evaluations counter.
|
private Field<T> |
field
Field to which the elements belong.
|
private T |
functionValueAccuracy
Function value accuracy.
|
private static int |
MAXIMAL_AGING
Maximal aging triggering an attempt to balance the bracketing interval.
|
private int |
maximalOrder
Maximal order.
|
private T |
relativeAccuracy
Relative accuracy.
|
| Constructor and Description |
|---|
FieldBracketingNthOrderBrentSolver(T relativeAccuracy,
T absoluteAccuracy,
T functionValueAccuracy,
int maximalOrder)
Construct a solver.
|
| Modifier and Type | Method and Description |
|---|---|
T |
getAbsoluteAccuracy()
Get the absolute accuracy.
|
int |
getEvaluations()
Get the number of evaluations of the objective function.
|
T |
getFunctionValueAccuracy()
Get the function accuracy.
|
int |
getMaxEvaluations()
Get the maximal number of function evaluations.
|
int |
getMaximalOrder()
Get the maximal order.
|
T |
getRelativeAccuracy()
Get the relative accuracy.
|
private T |
guessX(T targetY,
T[] x,
T[] y,
int start,
int end)
Guess an x value by nth order inverse polynomial interpolation.
|
T |
solve(int maxEval,
RealFieldUnivariateFunction<T> f,
T min,
T max,
AllowedSolution allowedSolution)
Solve for a zero in the given interval.
|
T |
solve(int maxEval,
RealFieldUnivariateFunction<T> f,
T min,
T max,
T startValue,
AllowedSolution allowedSolution)
Solve for a zero in the given interval, start at
startValue. |
private static final int MAXIMAL_AGING
private final Field<T extends RealFieldElement<T>> field
private final int maximalOrder
private final T extends RealFieldElement<T> functionValueAccuracy
private final T extends RealFieldElement<T> absoluteAccuracy
private final T extends RealFieldElement<T> relativeAccuracy
private IntegerSequence.Incrementor evaluations
public FieldBracketingNthOrderBrentSolver(T relativeAccuracy, T absoluteAccuracy, T functionValueAccuracy, int maximalOrder) throws NumberIsTooSmallException
relativeAccuracy - Relative accuracy.absoluteAccuracy - Absolute accuracy.functionValueAccuracy - Function value accuracy.maximalOrder - maximal order.NumberIsTooSmallException - if maximal order is lower than 2public int getMaximalOrder()
public int getMaxEvaluations()
getMaxEvaluations in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>public int getEvaluations()
optimize method. It is 0 if the method has not been
called yet.getEvaluations in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>public T getAbsoluteAccuracy()
getAbsoluteAccuracy in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>public T getRelativeAccuracy()
getRelativeAccuracy in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>public T getFunctionValueAccuracy()
getFunctionValueAccuracy in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>public T solve(int maxEval, RealFieldUnivariateFunction<T> f, T min, T max, AllowedSolution allowedSolution) throws NullArgumentException, NoBracketingException
solve in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>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.NullArgumentException - if f is null.NoBracketingException - if root cannot be bracketedpublic T solve(int maxEval, RealFieldUnivariateFunction<T> f, T min, T max, T startValue, AllowedSolution allowedSolution) throws NullArgumentException, NoBracketingException
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.solve in interface BracketedRealFieldUnivariateSolver<T extends RealFieldElement<T>>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.NullArgumentException - if f is null.NoBracketingException - if root cannot be bracketedprivate T guessX(T targetY, T[] x, T[] y, int start, int end)
The x value is guessed by evaluating polynomial Q(y) at y = targetY, where Q is built such that for all considered points (xi, yi), Q(yi) = xi.
targetY - target value for yx - reference points abscissas for interpolation,
note that this array is modified during computationy - reference points ordinates for interpolationstart - start index of the points to consider (inclusive)end - end index of the points to consider (exclusive)Copyright (c) 2003-2017 Apache Software Foundation