ROOT   Reference Guide
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 84 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. More...

virtual ~RootFinder ()

int Iterate ()
Perform a single iteration and return the Status. More...

int Iterations () const
Return the number of iteration performed to find the Root. More...

const char * Name () const
Return the current and latest estimate of the lower value of the Root-finding interval (for bracketing algorithms) More...

double Root () const
Return the current and latest estimate of the Root. More...

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. More...

bool SetFunction (const IGradFunction &f, double xstart)
Provide to the solver the function and an initial estimate of the root, for algorithms using derivatives. More...

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. More...

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. More...

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. More...

int Status () const
Return the status of the last estimate of the Root = 0 OK, not zero failure. More...

Private Member Functions

RootFinder (const RootFinder &)

RootFinderoperator= (const RootFinder &rhs)

Private Attributes

IRootFinderMethodfSolver

#include <Math/RootFinder.h>

◆ EType

Enumerator
kBRENT
kGSL_BISECTION
kGSL_FALSE_POS
kGSL_BRENT
kGSL_NEWTON
kGSL_SECANT
kGSL_STEFFENSON

Definition at line 88 of file RootFinder.h.

◆ RootFinder() [1/2]

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

Construct a Root-Finder algorithm.

Definition at line 37 of file RootFinder.cxx.

◆ ~RootFinder()

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

Definition at line 139 of file RootFinder.cxx.

◆ RootFinder() [2/2]

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

Definition at line 101 of file RootFinder.h.

◆ Iterate()

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

Perform a single iteration and return the Status.

Definition at line 164 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 157 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 201 of file RootFinder.h.

◆ operator=()

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

Definition at line 102 of file RootFinder.h.

◆ Root()

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

Return the current and latest estimate of the Root.

Definition at line 171 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 120 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 134 of file RootFinder.h.

◆ SetMethod()

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

Definition at line 44 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
 f Function whose root should be found. d Derivative of the function. start Starting point for iteration. maxIter Maximum number of iterations, passed to Solve(int,double,double) absTol Absolute tolerance, as in Solve(int,double,double) relTol Relative tolerance, passed to Solve(int,double,double)
Returns
true if a root was found. Retrieve the result using Root().

Definition at line 235 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
 f Function whose root should be found. min Minimum allowed value of x. max Maximum allowed value of x. maxIter Maximum number of iterations, passed to Solve(int,double,double) absTol Absolute tolerance, as in Solve(int,double,double) relTol Relative tolerance, passed to Solve(int,double,double)
Returns
true if a root was found. Retrieve the result using Root().

Definition at line 256 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 150 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 179 of file RootFinder.h.

◆ fSolver

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

Definition at line 211 of file RootFinder.h.

Libraries for ROOT::Math::RootFinder:
[legend]

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