Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Math::RootFinder Class Reference

User Class to find the Root of one dimensional functions.

The GSL Methods are implemented in MathMore and they are loaded automatically via the plug-in manager

The possible types of Root-finding algorithms are:

This class does not cupport copying

Definition at line 73 of file RootFinder.h.

Public Types

enum  EType {
  kBRENT , kGSL_BISECTION , kGSL_FALSE_POS , kGSL_BRENT ,
  kGSL_NEWTON , kGSL_SECANT , kGSL_STEFFENSON
}
 

Public Member Functions

 RootFinder (RootFinder::EType type=RootFinder::kBRENT)
 Construct a Root-Finder algorithm.
 
virtual ~RootFinder ()
 
int Iterate ()
 Perform a single iteration and return the Status.
 
int Iterations () const
 Return the number of iteration performed to find the Root.
 
const char * Name () const
 Return the current and latest estimate of the lower value of the Root-finding interval (for bracketing algorithms)
 
double Root () const
 Return the current and latest estimate of the Root.
 
bool SetFunction (const IGenFunction &f, double xlow, double xup)
 Provide to the solver the function and the initial search interval [xlow, xup] for algorithms not using derivatives (bracketing algorithms) The templated function f must be of a type implementing the operator() method, double operator() ( double x ) Returns non zero if interval is not valid (i.e.
 
bool SetFunction (const IGradFunction &f, double xstart)
 Provide to the solver the function and an initial estimate of the root, for algorithms using derivatives.
 
bool SetMethod (RootFinder::EType type=RootFinder::kBRENT)
 
template<class Function , class Derivative >
bool Solve (Function &f, Derivative &d, double start, int maxIter=100, double absTol=1E-8, double relTol=1E-10)
 Solve f(x) = 0, given a derivative d.
 
template<class Function >
bool Solve (Function &f, double min, double max, int maxIter=100, double absTol=1E-8, double relTol=1E-10)
 Solve f(x) = 0 numerically.
 
bool Solve (int maxIter=100, double absTol=1E-8, double relTol=1E-10)
 Compute the roots iterating until the estimate of the Root is within the required tolerance returning the iteration Status.
 
int Status () const
 Return the status of the last estimate of the Root = 0 OK, not zero failure.
 

Private Member Functions

 RootFinder (const RootFinder &)
 
RootFinderoperator= (const RootFinder &rhs)
 

Private Attributes

IRootFinderMethodfSolver
 

#include <Math/RootFinder.h>

Member Enumeration Documentation

◆ EType

Enumerator
kBRENT 
kGSL_BISECTION 
kGSL_FALSE_POS 
kGSL_BRENT 
kGSL_NEWTON 
kGSL_SECANT 
kGSL_STEFFENSON 

Definition at line 77 of file RootFinder.h.

Constructor & Destructor Documentation

◆ RootFinder() [1/2]

ROOT::Math::RootFinder::RootFinder ( RootFinder::EType  type = RootFinder::kBRENT)

Construct a Root-Finder algorithm.

Definition at line 40 of file RootFinder.cxx.

◆ ~RootFinder()

ROOT::Math::RootFinder::~RootFinder ( )
virtual

Definition at line 142 of file RootFinder.cxx.

◆ RootFinder() [2/2]

ROOT::Math::RootFinder::RootFinder ( const RootFinder )
inlineprivate

Definition at line 90 of file RootFinder.h.

Member Function Documentation

◆ Iterate()

int ROOT::Math::RootFinder::Iterate ( )
inline

Perform a single iteration and return the Status.

Definition at line 153 of file RootFinder.h.

◆ Iterations()

int ROOT::Math::RootFinder::Iterations ( ) const
inline

Return the number of iteration performed to find the Root.

Definition at line 146 of file RootFinder.h.

◆ Name()

const char * ROOT::Math::RootFinder::Name ( ) const
inline

Return the current and latest estimate of the lower value of the Root-finding interval (for bracketing algorithms)

Return the current and latest estimate of the upper value of the Root-finding interval (for bracketing algorithms) Get Name of the Root-finding solver algorithm

Definition at line 190 of file RootFinder.h.

◆ operator=()

RootFinder & ROOT::Math::RootFinder::operator= ( const RootFinder rhs)
inlineprivate

Definition at line 91 of file RootFinder.h.

◆ Root()

double ROOT::Math::RootFinder::Root ( ) const
inline

Return the current and latest estimate of the Root.

Definition at line 160 of file RootFinder.h.

◆ SetFunction() [1/2]

bool ROOT::Math::RootFinder::SetFunction ( const IGenFunction f,
double  xlow,
double  xup 
)
inline

Provide to the solver the function and the initial search interval [xlow, xup] for algorithms not using derivatives (bracketing algorithms) The templated function f must be of a type implementing the operator() method, double operator() ( double x ) Returns non zero if interval is not valid (i.e.

does not contains a root)

Definition at line 109 of file RootFinder.h.

◆ SetFunction() [2/2]

bool ROOT::Math::RootFinder::SetFunction ( const IGradFunction f,
double  xstart 
)
inline

Provide to the solver the function and an initial estimate of the root, for algorithms using derivatives.

The templated function f must be of a type implementing the operator() and the Gradient() methods. double operator() ( double x ) Returns non zero if starting point is not valid

Definition at line 123 of file RootFinder.h.

◆ SetMethod()

bool ROOT::Math::RootFinder::SetMethod ( RootFinder::EType  type = RootFinder::kBRENT)

Definition at line 47 of file RootFinder.cxx.

◆ Solve() [1/3]

template<class Function , class Derivative >
bool ROOT::Math::RootFinder::Solve ( Function f,
Derivative &  d,
double  start,
int  maxIter = 100,
double  absTol = 1E-8,
double  relTol = 1E-10 
)

Solve f(x) = 0, given a derivative d.

Parameters
fFunction whose root should be found.
dDerivative of the function.
startStarting point for iteration.
maxIterMaximum number of iterations, passed to Solve(int,double,double)
absTolAbsolute tolerance, as in Solve(int,double,double)
relTolRelative tolerance, passed to Solve(int,double,double)
Returns
true if a root was found. Retrieve the result using Root().

Definition at line 224 of file RootFinder.h.

◆ Solve() [2/3]

template<class Function >
bool ROOT::Math::RootFinder::Solve ( Function f,
double  min,
double  max,
int  maxIter = 100,
double  absTol = 1E-8,
double  relTol = 1E-10 
)

Solve f(x) = 0 numerically.

Parameters
fFunction whose root should be found.
minMinimum allowed value of x.
maxMaximum allowed value of x.
maxIterMaximum number of iterations, passed to Solve(int,double,double)
absTolAbsolute tolerance, as in Solve(int,double,double)
relTolRelative tolerance, passed to Solve(int,double,double)
Returns
true if a root was found. Retrieve the result using Root().

Definition at line 245 of file RootFinder.h.

◆ Solve() [3/3]

bool ROOT::Math::RootFinder::Solve ( int  maxIter = 100,
double  absTol = 1E-8,
double  relTol = 1E-10 
)
inline

Compute the roots iterating until the estimate of the Root is within the required tolerance returning the iteration Status.

Definition at line 139 of file RootFinder.h.

◆ Status()

int ROOT::Math::RootFinder::Status ( ) const
inline

Return the status of the last estimate of the Root = 0 OK, not zero failure.

Definition at line 168 of file RootFinder.h.

Member Data Documentation

◆ fSolver

IRootFinderMethod* ROOT::Math::RootFinder::fSolver
private

Definition at line 200 of file RootFinder.h.

Libraries for ROOT::Math::RootFinder:

The documentation for this class was generated from the following files: