Logo ROOT   6.12/07
Reference Guide
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 
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 
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 */
Namespace for new ROOT classes and functions.
Definition: StringConv.hxx:21
Secant algorithm, simplified version of Newton method, which does not require the derivative at every...
Base class for GSL Root-Finding algorithms for one dimensional functions which do not use function de...
Definition: GSLRootFinder.h:73
Steffenson method, providing the fastes convergence.
a Newton algorithm, which computes the derivative at each iteration See the GSL manual for more infor...
Roots::Bisection Bisection algorithm, simplest algorithm for bracketing the roots of a function...
False Position algorithm based on linear interpolation.
Bisection & operator=(const Bisection &)
Base class for GSL Root-Finding algorithms for one dimensional functions which use function derivativ...
Namespace for new Math classes and functions.
Brent-Dekker algorithm which combines an interpolation strategy with the bisection algorithm See the ...