// @(#)root/mathmore:$Id: RootFinderAlgorithms.h 21553 2007-12-21 10:55:46Z moneta $
// Author: L. Moneta, A. Zsenei   08/2005 

 /**********************************************************************
  *                                                                    *
  * Copyright (c) 2004 ROOT Foundation,  CERN/PH-SFT                   *
  *                                                                    *
  * This library is free software; you can redistribute it and/or      *
  * modify it under the terms of the GNU General Public License        *
  * as published by the Free Software Foundation; either version 2     *
  * of the License, or (at your option) any later version.             *
  *                                                                    *
  * This library is distributed in the hope that it will be useful,    *
  * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
  * General Public License for more details.                           *
  *                                                                    *
  * You should have received a copy of the GNU General Public License  *
  * along with this library (see file COPYING); if not, write          *
  * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
  * 330, Boston, MA 02111-1307 USA, or contact the author.             *
  *                                                                    *
  **********************************************************************/

// Header file for GSL ROOT Finder Algorithms
// 
// Created by: moneta  at Sun Nov 14 14:07:50 2004
// 
// Last update: Sun Nov 14 14:07:50 2004
// 
#ifndef ROOT_Math_GSLRootFinderAlgorithms
#define ROOT_Math_GSLRootFinderAlgorithms


#ifndef ROOT_Math_GSLRootFinder
#include "Math/GSLRootFinder.h"
#endif

#ifndef ROOT_Math_GSLRootFinderDeriv
#include "Math/GSLRootFinderDeriv.h"
#endif

namespace ROOT {
namespace Math {

  /**
     Root-Finding Algorithms

  */

namespace Roots { 

//________________________________________________________________________________________________________
     /**
        Roots::Bisection
	Bisection algorithm, simplest algorithm for bracketing the roots of a function, but slowest one.
	See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">GSL manual</A> for more information
	@ingroup RootFinders
     */

   class Bisection : public GSLRootFinder {
       
   public: 

      Bisection(); 
      virtual ~Bisection();
       
   private:
      // usually copying is non trivial, so we make this unaccessible

      Bisection(const Bisection &); 
      Bisection & operator = (const Bisection &); 

   }; 

//________________________________________________________________________________________________________
   /**
      False Position algorithm based on linear interpolation. 
      See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">GSL manual</A> for more information
      @ingroup RootFinders
   */

   class FalsePos : public GSLRootFinder {
       
   public: 

      FalsePos(); 
      virtual ~FalsePos();
       
   private:
      // usually copying is non trivial, so we make this unaccessible
      FalsePos(const FalsePos &); 
      FalsePos & operator = (const FalsePos &); 

   }; 



//________________________________________________________________________________________________________
   /**
      Brent-Dekker algorithm which combines an interpolation strategy with the bisection algorithm 
      See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Bracketing-Algorithms.html">
      GSL manual</A> for more information
	
      @ingroup RootFinders
   */

   class Brent : public GSLRootFinder {
       
   public: 

      Brent(); 
      virtual ~Brent();
       
   private:
      // usually copying is non trivial, so we make this unaccessible
      Brent(const Brent &); 
      Brent & operator = (const Brent &); 

   }; 

     
   //----------------------------------------------------------------------
   // algorithm with derivatives 
   //----------------------------------------------------------------------

//________________________________________________________________________________________________________
   /**
      a Newton algorithm, which computes the derivative at each iteration
      See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
      GSL manual</A> for more information

      @ingroup RootFinders
   */

   class Newton : public GSLRootFinderDeriv {
       
   public: 

      Newton(); 
      virtual ~Newton();
       
   private:
      // usually copying is non trivial, so we make this unaccessible
      Newton(const Newton &); 
      Newton & operator = (const Newton &); 

   }; 

    
//________________________________________________________________________________________________________
   /**
      \a Secant algorithm, simplified version of Newton method, which does not require the derivative at every step. 
      See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
      GSL manual</A> for more information
      @ingroup RootFinders
   */

   class Secant : public GSLRootFinderDeriv {
       
   public: 

      Secant(); 
      virtual ~Secant();
       
   private:
      // usually copying is non trivial, so we make this unaccessible
      Secant(const Secant &); 
      Secant & operator = (const Secant &); 

   }; 

//________________________________________________________________________________________________________
   /**
      \a Steffenson method, providing the fastes convergence.
      See the <A HREF="http://www.gnu.org/software/gsl/manual/html_node/Root-Finding-Algorithms-using-Derivatives.html">
      GSL manual</A> for more information

      @ingroup RootFinders
   */

   class Steffenson : public GSLRootFinderDeriv {
       
   public: 

      Steffenson(); 
      virtual ~Steffenson();
       
   private:
      // usually copying is non trivial, so we make this unaccessible
      Steffenson(const Steffenson &); 
      Steffenson & operator = (const Steffenson &); 

   }; 


}

} // namespace Math
} // namespace ROOT


#endif /* ROOT_Math_GSLRootFinderAlgorithms */

Last change: Wed Jun 25 08:30:10 2008
Last generated: 2008-06-25 08:30

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.