Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-16 09:08:13

0001 // @(#)root/mathmore:$Id$
0002 // Author: L. Moneta, A. Zsenei   08/2005
0003 
0004  /**********************************************************************
0005   *                                                                    *
0006   * Copyright (c) 2004 ROOT Foundation,  CERN/PH-SFT                   *
0007   *                                                                    *
0008   * This library is free software; you can redistribute it and/or      *
0009   * modify it under the terms of the GNU General Public License        *
0010   * as published by the Free Software Foundation; either version 2     *
0011   * of the License, or (at your option) any later version.             *
0012   *                                                                    *
0013   * This library is distributed in the hope that it will be useful,    *
0014   * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
0015   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
0016   * General Public License for more details.                           *
0017   *                                                                    *
0018   * You should have received a copy of the GNU General Public License  *
0019   * along with this library (see file COPYING); if not, write          *
0020   * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
0021   * 330, Boston, MA 02111-1307 USA, or contact the author.             *
0022   *                                                                    *
0023   **********************************************************************/
0024 
0025 // Header file for GSL ROOT Finder Algorithms
0026 //
0027 // Created by: moneta  at Sun Nov 14 14:07:50 2004
0028 //
0029 // Last update: Sun Nov 14 14:07:50 2004
0030 //
0031 #ifndef ROOT_Math_GSLRootFinderAlgorithms
0032 #define ROOT_Math_GSLRootFinderAlgorithms
0033 
0034 
0035 #include "Math/GSLRootFinder.h"
0036 
0037 #include "Math/GSLRootFinderDeriv.h"
0038 
0039 namespace ROOT {
0040 namespace Math {
0041 
0042   /**
0043      Root-Finding Algorithms
0044 
0045   */
0046 
0047 namespace Roots {
0048 
0049 //________________________________________________________________________________________________________
0050      /**
0051         Roots::Bisection
0052       Bisection algorithm, simplest algorithm for bracketing the roots of a function, but slowest one.
0053       See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">GSL manual</A> for more information
0054       @ingroup RootFinders
0055      */
0056 
0057    class Bisection : public GSLRootFinder {
0058 
0059    public:
0060 
0061       Bisection();
0062       ~Bisection() override;
0063    };
0064 
0065 //________________________________________________________________________________________________________
0066    /**
0067       False Position algorithm based on linear interpolation.
0068       See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">GSL manual</A> for more information
0069       @ingroup RootFinders
0070    */
0071 
0072    class FalsePos : public GSLRootFinder {
0073 
0074    public:
0075 
0076       FalsePos();
0077       ~FalsePos() override;
0078    };
0079 
0080 
0081 
0082 //________________________________________________________________________________________________________
0083    /**
0084       Brent-Dekker algorithm which combines an interpolation strategy with the bisection algorithm
0085       See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">
0086       GSL manual</A> for more information
0087 
0088       @ingroup RootFinders
0089    */
0090 
0091    class Brent : public GSLRootFinder {
0092 
0093    public:
0094 
0095       Brent();
0096       ~Brent() override;
0097    };
0098 
0099 
0100    //----------------------------------------------------------------------
0101    // algorithm with derivatives
0102    //----------------------------------------------------------------------
0103 
0104 //________________________________________________________________________________________________________
0105    /**
0106       a Newton algorithm, which computes the derivative at each iteration
0107       See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
0108       GSL manual</A> for more information
0109 
0110       @ingroup RootFinders
0111    */
0112 
0113    class Newton : public GSLRootFinderDeriv {
0114 
0115    public:
0116 
0117       Newton();
0118       ~Newton() override;
0119    };
0120 
0121 
0122 //________________________________________________________________________________________________________
0123    /**
0124       \a Secant algorithm, simplified version of Newton method, which does not require the derivative at every step.
0125       See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
0126       GSL manual</A> for more information
0127       @ingroup RootFinders
0128    */
0129 
0130    class Secant : public GSLRootFinderDeriv {
0131 
0132    public:
0133 
0134       Secant();
0135       ~Secant() override;
0136    };
0137 
0138 //________________________________________________________________________________________________________
0139    /**
0140       \a Steffenson method, providing the fastes convergence.
0141       See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
0142       GSL manual</A> for more information
0143 
0144       @ingroup RootFinders
0145    */
0146 
0147    class Steffenson : public GSLRootFinderDeriv {
0148 
0149    public:
0150 
0151       Steffenson();
0152       ~Steffenson() override;
0153    };
0154 
0155 
0156 }
0157 
0158 } // namespace Math
0159 } // namespace ROOT
0160 
0161 
0162 #endif /* ROOT_Math_GSLRootFinderAlgorithms */