// @(#)root/mathmore:$Name: $:$Id: Interpolator.h,v 1.1 2005/09/18 17:33:47 brun Exp $
// Authors: 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 class Interpolator
//
// Created by: moneta at Fri Nov 26 15:00:25 2004
//
// Last update: Fri Nov 26 15:00:25 2004
//
#ifndef ROOT_Math_Interpolator
#define ROOT_Math_Interpolator
#include "Math/InterpolationTypes.h"
#include <vector>
#include <string>
/**
@defgroup Interpolation Interpolation
*/
namespace ROOT {
namespace Math {
class GSLInterpolator;
/**
Class for performing function interpolation of points.
The class is instantiated with an interpolation methods, passed as an enumeration in the constructor.
See Interpolation::Type for the available interpolation algorithms, which are implemented using GSL.
See also the <A HREF=http://www.gnu.org/software/gsl/manual/gsl-ref_26.html#SEC391">GSL manual</A> for more information.
The class provides additional methods for computing derivatives and integrals of interpolating functions.
This class does not support copying.
@ingroup Interpolation
*/
class Interpolator {
public:
/**
Constructs an interpolator class from vector of data points \f$ (x_i, y_i )\f$ and with Interpolation::Type type.
The method will compute a continous interpolating function \f$ y(x) \f$ such that \f$ y_i = y ( x_i )\f$.
*/
Interpolator(const std::vector<double> & x, const std::vector<double> & y, Interpolation::Type type = Interpolation::POLYNOMIAL);
virtual ~Interpolator();
private:
// usually copying is non trivial, so we make this unaccessible
Interpolator(const Interpolator &);
Interpolator & operator = (const Interpolator &);
public:
/**
Return the interpolated value at point x
*/
double Eval( double x ) const;
/**
Return the derivative of the interpolated function at point x
*/
double Deriv( double x ) const;
/**
Return the second derivative of the interpolated function at point x
*/
double Deriv2( double x ) const;
/**
Return the Integral of the interpolated function over the range [a,b]
*/
double Integ( double a, double b) const;
/**
Return the type of interpolation method
*/
std::string TypeGet() const;
protected:
private:
GSLInterpolator * fInterp;
};
} // namespace Math
} // namespace ROOT
#endif /* ROOT_Math_Interpolator */
ROOT page - Class index - Class Hierarchy - Top of the page
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.