- QuantLib
- Solver1D
 
Base class for 1-D solvers. More...
#include <ql/math/solver1d.hpp>

| Public Member Functions | |
| Modifiers | |
| template<class F > | |
| Real | solve (const F &f, Real accuracy, Real guess, Real step) const | 
| template<class F > | |
| Real | solve (const F &f, Real accuracy, Real guess, Real xMin, Real xMax) const | 
| void | setMaxEvaluations (Size evaluations) | 
| void | setLowerBound (Real lowerBound) | 
| sets the lower bound for the function domain | |
| void | setUpperBound (Real upperBound) | 
| sets the upper bound for the function domain | |
| Protected Attributes | |
| Real | root_ | 
| Real | xMin_ | 
| Real | xMax_ | 
| Real | fxMin_ | 
| Real | fxMax_ | 
| Size | maxEvaluations_ | 
| Size | evaluationNumber_ | 
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 : public Solver1D<Foo> { public: ... template <class F> Real solveImpl(const F& f, Real accuracy) const { ... } };
 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 of solveImpl can safely assume all of the above. or
 or  .
.This method returns the zero of the function  , determined with the given accuracy
, determined with the given accuracy  ; depending on the particular solver, this might mean that the returned
; depending on the particular solver, this might mean that the returned  is such that
 is such that  , or that
, or that  where
 where  is the real zero.
 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  , determined with the given accuracy
, determined with the given accuracy  ; depending on the particular solver, this might mean that the returned
; depending on the particular solver, this might mean that the returned  is such that
 is such that  , or that
, or that  where
 where  is the real zero.
 is the real zero.
An initial guess must be supplied, as well as two values  and
 and  which must bracket the zero (i.e., either
 which must bracket the zero (i.e., either  , or
, or  must be true).
 must be true). 
| void setMaxEvaluations | ( | Size | evaluations | ) | 
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.