sets the lower bound for the function domain
This method sets the maximum number of function evaluations for the bracketing routine. An error is thrown if a bracket is not found after this number of evaluations.
sets the upper bound for the function domain
This method returns the zero of the function $ f $, determined with the given accuracy $ \epsilon $; depending on the particular solver, this might mean that the returned $ x $ is such that $ |f(x)| < \epsilon $ , or that $ |x-\xi| < \epsilon $ where $ \xi $ is the real zero.
This method contains a bracketing routine to which an initial guess must be supplied as well as a step used to scan the range of the possible bracketing values.
This method returns the zero of the function $ f $, determined with the given accuracy $ \epsilon $; depending on the particular solver, this might mean that the returned $ x $ is such that $ |f(x)| < \epsilon $ , or that $ |x-\xi| < \epsilon $ where $ \xi $ is the real zero.
An initial guess must be supplied, as well as two values $ x_\mathrm{min} $ and $ x_\mathrm{max} $ which must bracket the zero (i.e., either $ f(x_\mathrm{min}) \leq 0 \leq f(x_\mathrm{max}) $, or $ f(x_\mathrm{max}) \leq 0 \leq f(x_\mathrm{min}) $ must be true).
Base class for 1-D solvers
The implementation of this class uses the so-called "Barton-Nackman trick", also known as "the curiously recurring template pattern". Concrete solvers will be declared as:
class Foo extends Solver1D<Foo> { solveImpl(f: UnaryFunction<Real, Real>, accuracy: Real): Real { ... } }
Before calling
solveImpl
, the base class will set its protected data members so that:_xMin
and_xMax
form a valid bracket;_fxMin
and_fxMax
contain the values of the function in_xMin
and_xMax
;_root
is a valid initial guess. The implementation ofsolveImpl
can safely assume all of the above.