ROOT   Reference Guide
ROOT::Math::Polynomial Class Reference

Parametric Function class describing polynomials of order n.

P(x) = p[0] + p[1]*x + p[2]*x**2 + ....... + p[n]*x**n

The class implements also the derivatives, dP(x)/dx and the dP(x)/dp[i].

The class provides also the method to find the roots of the polynomial. It uses analytical methods up to quartic polynomials.

Implements both the Parameteric function interface and the gradient interface since it provides the analytical gradient with respect to x

Definition at line 63 of file Polynomial.h.

## Public Types

Public Types inherited from ROOT::Math::ParamFunction< IParamGradFunction >
typedef IPFType::BaseFunc BaseFunc

typedef IParametricFunctionOneDim::BaseFunc BaseFunc

typedef IParametricFunctionOneDim BaseParamFunc

Public Types inherited from ROOT::Math::IParametricFunctionOneDim
typedef IBaseFunctionOneDim BaseFunc

Public Types inherited from ROOT::Math::IBaseFunctionOneDim
typedef IBaseFunctionOneDim BaseFunc

## Public Member Functions

Polynomial (double a, double b)
Construct a Polynomial of degree 1 : a*x + b. More...

Polynomial (double a, double b, double c)
Construct a Polynomial of degree 2 : a*x**2 + b*x + c. More...

Polynomial (double a, double b, double c, double d)
Construct a Polynomial of degree 3 : a*x**3 + b*x**2 + c*x + d. More...

Polynomial (double a, double b, double c, double d, double e)
Construct a Polynomial of degree 4 : a*x**4 + b*x**3 + c*x**2 + dx + e. More...

Polynomial (unsigned int n=0)
Construct a Polynomial function of order n. More...

virtual ~Polynomial ()

IGenFunctionClone () const
Clone a function. More...

void FdF (double x, double &f, double &df) const
Optimized method to evaluate at the same time the function value and derivative at a point x. More...

const std::vector< std::complex< double > > & FindNumRoots ()
Find the polynomial roots using always an iterative numerical methods The numerical method used is from GSL (see <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_6.html#SEC53" ) More...

std::vector< doubleFindRealRoots ()
Find the only the real polynomial roots. More...

const std::vector< std::complex< double > > & FindRoots ()
Find the polynomial roots. More...

unsigned int Order () const
Order of Polynomial. More...

Public Member Functions inherited from ROOT::Math::ParamFunction< IParamGradFunction >
ParamFunction (unsigned int npar=0)
Construct a parameteric function with npar parameters. More...

virtual ~ParamFunction ()

unsigned int NPar () const
Return the number of parameters. More...

virtual const doubleParameters () const
Access the parameter values. More...

virtual void SetParameters (const double *p)
Set the parameter values. More...

Public Member Functions inherited from ROOT::Math::IParametricGradFunctionOneDim
Virtual Destructor (no operations) More...

double ParameterDerivative (const double *x, const double *p, unsigned int ipar=0) const
Partial derivative with respect a parameter Compatibility interface with multi-dimensional functions. More...

double ParameterDerivative (const double *x, unsigned int ipar=0) const
Evaluate partial derivative using cached parameter values (multi-dim like interface) More...

double ParameterDerivative (double x, const double *p, unsigned int ipar=0) const
Partial derivative with respect a parameter. More...

double ParameterDerivative (double x, unsigned int ipar=0) const
Evaluate partial derivative using cached parameter values. More...

Compatibility interface with multi-dimensional functions. More...

Evaluate all derivatives using cached parameter values (multi-dim like interface) More...

Evaluate the derivatives of the function with respect to the parameters at a point x. More...

Evaluate all derivatives using cached parameter values. More...

Public Member Functions inherited from ROOT::Math::IParametricFunctionOneDim
double operator() (const double *x, const double *p) const
multidim-like interface More...

double operator() (double x, const double *p) const
Evaluate function at a point x and for given parameters p. More...

Public Member Functions inherited from ROOT::Math::IBaseFunctionOneDim
IBaseFunctionOneDim ()

virtual ~IBaseFunctionOneDim ()
virtual destructor More...

virtual IBaseFunctionOneDimClone () const =0
Clone a function. More...

double operator() (const double *x) const
Evaluate the function at a point x[]. More...

double operator() (double x) const
Evaluate the function at a point x Use the a pure virtual private method DoEval which must be implemented by sub-classes. More...

Public Member Functions inherited from ROOT::Math::IBaseParam
virtual ~IBaseParam ()
Virtual Destructor (no operations) More...

virtual unsigned int NPar () const =0
Return the number of Parameters. More...

virtual std::string ParameterName (unsigned int i) const
Return the name of the i-th parameter (starting from zero) Overwrite if want to avoid the default name ("Par_0, Par_1, ...") More...

virtual const doubleParameters () const =0
Access the parameter values. More...

virtual void SetParameters (const double *p)=0
Set the parameter values. More...

Public Member Functions inherited from ROOT::Math::IGradientOneDim
virtual destructor More...

double Derivative (const double *x) const
Compatibility method with multi-dimensional interface for partial derivative. More...

double Derivative (double x) const
Return the derivative of the function at a point x Use the private method DoDerivative. More...

void FdF (const double *x, double &f, double *df) const
Compatibility method with multi-dimensional interface for Gradient and function evaluation. More...

virtual void FdF (double x, double &f, double &df) const =0
Optimized method to evaluate at the same time the function value and derivative at a point x. More...

void Gradient (const double *x, double *g) const
Compatibility method with multi-dimensional interface for Gradient. More...

## Private Member Functions

double DoDerivative (double x) const
function to evaluate the derivative with respect each coordinate. More...

double DoEvalPar (double x, const double *p) const
Implementation of the evaluation function using the x value and the parameters. More...

double DoParameterDerivative (double x, const double *p, unsigned int ipar) const
Evaluate the gradient, to be implemented by the derived classes. More...

## Private Attributes

std::vector< doublefDerived_params

unsigned int fOrder

std::vector< std::complex< double > > fRoots

Protected Attributes inherited from ROOT::Math::ParamFunction< IParamGradFunction >
std::vector< doublefParams

#include <Math/Polynomial.h>

Inheritance diagram for ROOT::Math::Polynomial:
[legend]

## ◆ ParFunc

Definition at line 70 of file Polynomial.h.

## ◆ Polynomial() [1/5]

 ROOT::Math::Polynomial::Polynomial ( unsigned int n = 0 )

Construct a Polynomial function of order n.

The number of Parameters is n+1.

Definition at line 49 of file Polynomial.cxx.

## ◆ Polynomial() [2/5]

 ROOT::Math::Polynomial::Polynomial ( double a, double b )

Construct a Polynomial of degree 1 : a*x + b.

Definition at line 58 of file Polynomial.cxx.

## ◆ Polynomial() [3/5]

 ROOT::Math::Polynomial::Polynomial ( double a, double b, double c )

Construct a Polynomial of degree 2 : a*x**2 + b*x + c.

Definition at line 68 of file Polynomial.cxx.

## ◆ Polynomial() [4/5]

 ROOT::Math::Polynomial::Polynomial ( double a, double b, double c, double d )

Construct a Polynomial of degree 3 : a*x**3 + b*x**2 + c*x + d.

Definition at line 79 of file Polynomial.cxx.

## ◆ Polynomial() [5/5]

 ROOT::Math::Polynomial::Polynomial ( double a, double b, double c, double d, double e )

Construct a Polynomial of degree 4 : a*x**4 + b*x**3 + c*x**2 + dx + e.

Definition at line 92 of file Polynomial.cxx.

## ◆ ~Polynomial()

 virtual ROOT::Math::Polynomial::~Polynomial ( )
inlinevirtual

Definition at line 99 of file Polynomial.h.

## ◆ Clone()

 IGenFunction * ROOT::Math::Polynomial::Clone ( ) const
virtual

Clone a function.

Each derived class will implement their version of the provate DoClone method

Implements ROOT::Math::IBaseFunctionOneDim.

Definition at line 143 of file Polynomial.cxx.

## ◆ DoDerivative()

 double ROOT::Math::Polynomial::DoDerivative ( double x ) const
privatevirtual

function to evaluate the derivative with respect each coordinate.

To be implemented by the derived class

Definition at line 127 of file Polynomial.cxx.

## ◆ DoEvalPar()

 double ROOT::Math::Polynomial::DoEvalPar ( double x, const double * p ) const
privatevirtual

Implementation of the evaluation function using the x value and the parameters.

Must be implemented by derived classes

Implements ROOT::Math::IParametricFunctionOneDim.

Definition at line 119 of file Polynomial.cxx.

## ◆ DoParameterDerivative()

 double ROOT::Math::Polynomial::DoParameterDerivative ( double x, const double * p, unsigned int ipar ) const
privatevirtual

Evaluate the gradient, to be implemented by the derived classes.

Definition at line 136 of file Polynomial.cxx.

## ◆ FdF()

 void ROOT::Math::Polynomial::FdF ( double x, double & f, double & df ) const
inlinevirtual

Optimized method to evaluate at the same time the function value and derivative at a point x.

Implement the interface specified bby ROOT::Math::IGradientOneDim. In the case of polynomial there is no advantage to compute both at the same time

Definition at line 143 of file Polynomial.h.

## ◆ FindNumRoots()

 const std::vector< std::complex< double > > & ROOT::Math::Polynomial::FindNumRoots ( )

Find the polynomial roots using always an iterative numerical methods The numerical method used is from GSL (see <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_6.html#SEC53" )

Definition at line 247 of file Polynomial.cxx.

## ◆ FindRealRoots()

 std::vector< double > ROOT::Math::Polynomial::FindRealRoots ( )

Find the only the real polynomial roots.

For n <= 4, the roots are found analytically while for larger order an iterative numerical method is used The numerical method used is from GSL (see <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_6.html#SEC53" )

Definition at line 237 of file Polynomial.cxx.

## ◆ FindRoots()

 const std::vector< std::complex< double > > & ROOT::Math::Polynomial::FindRoots ( )

Find the polynomial roots.

For n <= 4, the roots are found analytically while for larger order an iterative numerical method is used The numerical method used is from GSL (see <A HREF="http://www.gnu.org/software/gsl/manual/gsl-ref_6.html#SEC53" )

Definition at line 151 of file Polynomial.cxx.

## ◆ Order()

 unsigned int ROOT::Math::Polynomial::Order ( ) const
inline

Order of Polynomial.

Definition at line 133 of file Polynomial.h.

## ◆ fDerived_params

 std::vector ROOT::Math::Polynomial::fDerived_params
mutableprivate

Definition at line 162 of file Polynomial.h.

## ◆ fOrder

 unsigned int ROOT::Math::Polynomial::fOrder
private

Definition at line 159 of file Polynomial.h.

## ◆ fRoots

 std::vector< std::complex < double > > ROOT::Math::Polynomial::fRoots
private

Definition at line 166 of file Polynomial.h.

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

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