ROOT
6.30.04
Reference Guide
All
Namespaces
Files
Pages
RootFinderAlgorithms.h
Go to the documentation of this file.
1
// @(#)root/mathmore:$Id$
2
// Author: L. Moneta, A. Zsenei 08/2005
3
4
/**********************************************************************
5
* *
6
* Copyright (c) 2004 ROOT Foundation, CERN/PH-SFT *
7
* *
8
* This library is free software; you can redistribute it and/or *
9
* modify it under the terms of the GNU General Public License *
10
* as published by the Free Software Foundation; either version 2 *
11
* of the License, or (at your option) any later version. *
12
* *
13
* This library is distributed in the hope that it will be useful, *
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16
* General Public License for more details. *
17
* *
18
* You should have received a copy of the GNU General Public License *
19
* along with this library (see file COPYING); if not, write *
20
* to the Free Software Foundation, Inc., 59 Temple Place, Suite *
21
* 330, Boston, MA 02111-1307 USA, or contact the author. *
22
* *
23
**********************************************************************/
24
25
// Header file for GSL ROOT Finder Algorithms
26
//
27
// Created by: moneta at Sun Nov 14 14:07:50 2004
28
//
29
// Last update: Sun Nov 14 14:07:50 2004
30
//
31
#ifndef ROOT_Math_GSLRootFinderAlgorithms
32
#define ROOT_Math_GSLRootFinderAlgorithms
33
34
35
#include "
Math/GSLRootFinder.h
"
36
37
#include "
Math/GSLRootFinderDeriv.h
"
38
39
namespace
ROOT {
40
namespace
Math {
41
42
/**
43
Root-Finding Algorithms
44
45
*/
46
47
namespace
Roots {
48
49
//________________________________________________________________________________________________________
50
/**
51
Roots::Bisection
52
Bisection algorithm, simplest algorithm for bracketing the roots of a function, but slowest one.
53
See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">GSL manual</A> for more information
54
@ingroup RootFinders
55
*/
56
57
class
Bisection :
public
GSLRootFinder {
58
59
public
:
60
61
Bisection();
62
virtual
~Bisection();
63
64
private
:
65
// usually copying is non trivial, so we make this unaccessible
66
67
Bisection(
const
Bisection &);
68
Bisection & operator = (
const
Bisection &);
69
70
};
71
72
//________________________________________________________________________________________________________
73
/**
74
False Position algorithm based on linear interpolation.
75
See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">GSL manual</A> for more information
76
@ingroup RootFinders
77
*/
78
79
class
FalsePos :
public
GSLRootFinder {
80
81
public
:
82
83
FalsePos();
84
virtual
~FalsePos();
85
86
private
:
87
// usually copying is non trivial, so we make this unaccessible
88
FalsePos(
const
FalsePos &);
89
FalsePos & operator = (
const
FalsePos &);
90
91
};
92
93
94
95
//________________________________________________________________________________________________________
96
/**
97
Brent-Dekker algorithm which combines an interpolation strategy with the bisection algorithm
98
See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">
99
GSL manual</A> for more information
100
101
@ingroup RootFinders
102
*/
103
104
class
Brent :
public
GSLRootFinder {
105
106
public
:
107
108
Brent();
109
virtual
~Brent();
110
111
private
:
112
// usually copying is non trivial, so we make this unaccessible
113
Brent(
const
Brent &);
114
Brent & operator = (
const
Brent &);
115
116
};
117
118
119
//----------------------------------------------------------------------
120
// algorithm with derivatives
121
//----------------------------------------------------------------------
122
123
//________________________________________________________________________________________________________
124
/**
125
a Newton algorithm, which computes the derivative at each iteration
126
See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
127
GSL manual</A> for more information
128
129
@ingroup RootFinders
130
*/
131
132
class
Newton :
public
GSLRootFinderDeriv {
133
134
public
:
135
136
Newton();
137
virtual
~Newton();
138
139
private
:
140
// usually copying is non trivial, so we make this unaccessible
141
Newton(
const
Newton &);
142
Newton & operator = (
const
Newton &);
143
144
};
145
146
147
//________________________________________________________________________________________________________
148
/**
149
\a Secant algorithm, simplified version of Newton method, which does not require the derivative at every step.
150
See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
151
GSL manual</A> for more information
152
@ingroup RootFinders
153
*/
154
155
class
Secant :
public
GSLRootFinderDeriv {
156
157
public
:
158
159
Secant();
160
virtual
~Secant();
161
162
private
:
163
// usually copying is non trivial, so we make this unaccessible
164
Secant(
const
Secant &);
165
Secant & operator = (
const
Secant &);
166
167
};
168
169
//________________________________________________________________________________________________________
170
/**
171
\a Steffenson method, providing the fastes convergence.
172
See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
173
GSL manual</A> for more information
174
175
@ingroup RootFinders
176
*/
177
178
class
Steffenson :
public
GSLRootFinderDeriv {
179
180
public
:
181
182
Steffenson();
183
virtual
~Steffenson();
184
185
private
:
186
// usually copying is non trivial, so we make this unaccessible
187
Steffenson(
const
Steffenson &);
188
Steffenson & operator = (
const
Steffenson &);
189
190
};
191
192
193
}
194
195
}
// namespace Math
196
}
// namespace ROOT
197
198
199
#endif
/* ROOT_Math_GSLRootFinderAlgorithms */
GSLRootFinder.h
GSLRootFinderDeriv.h
math
mathmore
inc
Math
RootFinderAlgorithms.h
Generated on Tue May 5 2020 14:03:03 for ROOT by
1.8.5