ROOT
6.30.04
Reference Guide
All
Namespaces
Files
Pages
IRootFinderMethod.h
Go to the documentation of this file.
1
// @(#)root/mathcore:$Id$
2
// Authors: David Gonzalez Maline 01/2008
3
4
/**********************************************************************
5
* *
6
* Copyright (c) 2006 , LCG ROOT MathLib Team *
7
* *
8
* *
9
**********************************************************************/
10
11
// Header for the IRootFinderMethod interface
12
//
13
// Created by: David Gonzalez Maline : Fri Jan 25 2008
14
//
15
16
#ifndef ROOT_Math_IRootFinderMethod
17
#define ROOT_Math_IRootFinderMethod
18
19
#include "
Math/Error.h
"
20
21
#include "
Math/IFunctionfwd.h
"
22
23
namespace
ROOT {
24
namespace
Math {
25
26
//___________________________________________________________________________________________
27
/**
28
Interface for finding function roots of one-dimensional functions
29
30
@ingroup RootFinders
31
32
*/
33
34
class
IRootFinderMethod {
35
public
:
36
/** Default Destructor. */
37
virtual
~IRootFinderMethod() {}
38
39
/** Default Constructor. */
40
IRootFinderMethod() {}
41
42
// Common functionality
43
44
/** Sets the function for algorithms using derivatives. */
45
virtual
bool
SetFunction(
const
ROOT::Math::IGradFunction&,
double
)
46
{
47
MATH_ERROR_MSG(
"SetFunction"
,
"This method must be used with a Root Finder algorithm using derivatives"
);
48
return
false
;
49
}
50
51
/** Sets the function for the rest of the algorithms.
52
The parameters set the interval where the root has to be calculated. */
53
virtual
bool
SetFunction(
const
ROOT::Math::IGenFunction& ,
double
,
double
)
54
{
55
MATH_ERROR_MSG(
"SetFunction"
,
"Algorithm requires derivatives"
);
56
return
false
;
57
}
58
59
/** Returns the previously calculated root. */
60
virtual
double
Root()
const
= 0;
61
62
/** Returns the status of the previous estimate */
63
virtual
int
Status()
const
= 0;
64
65
// Methods to be Implemented in the derived classes
66
67
/** Stimates the root for the function.
68
\@param maxIter maximum number of iterations.
69
\@param absTol desired absolute error in the minimum position.
70
\@param absTol desired relative error in the minimum position.
71
*/
72
virtual
bool
Solve(
int
maxIter = 100,
double
absTol = 1E-8,
double
relTol = 1E-10) = 0;
73
74
/** Return name of root finder algorithm */
75
virtual
const
char
* Name()
const
= 0;
76
77
/** This method is implemented only by the GSLRootFinder
78
and GSLRootFinderDeriv classes and will return an error if it's not one of them. */
79
virtual
int
Iterate() {
80
MATH_ERROR_MSG(
"Iterate"
,
"This method must be used with a Root Finder algorithm wrapping the GSL Library"
);
81
return
-1;
82
}
83
84
/** Return number of iterations used to find the root
85
Must be implemented by derived classes
86
*/
87
virtual
int
Iterations()
const
{
return
-1; }
88
89
};
90
91
}
// namespace Math
92
}
// namespace ROOT
93
94
95
#endif
/* ROOT_Math_IRootFinderMethod */
Error.h
IFunctionfwd.h
math
mathcore
inc
Math
IRootFinderMethod.h
Generated on Tue May 5 2020 14:03:01 for ROOT by
1.8.5