/*---------------------------------------------------------------------------*
* IT++ *
*---------------------------------------------------------------------------*
* Copyright (c) 1995-2004 by Tony Ottosson, Thomas Eriksson, Pål Frenger, *
* Tobias Ringström, and Jonas Samuelsson. *
* *
* Permission to use, copy, modify, and distribute this software and its *
* documentation under the terms of the GNU General Public License is hereby *
* granted. No representations are made about the suitability of this *
* software for any purpose. It is provided "as is" without expressed or *
* implied warranty. See the GNU General Public License for more details. *
*---------------------------------------------------------------------------*/
/*!
\file
\brief Numerical Integration
\author Tony Ottosson
1.1
2004/10/14 16:41:22
*/
#ifndef __integration_h
#define __integration_h
#include "itconfig.h"
#include "base/vec.h"
#include <limits>
namespace itpp {
/*!
\defgroup integration Numerical Integration
\brief Numerical integration routines
*/
//@{
/*!
1-dimensional numerical Simpson quadrature integration
Calculate the 1-dimensional integral
\f[
\int_a^b f(x) dx
\f]
Uses an adaptive Simpson quadrature method. See [Gander] for more details. The integrand is
specified as a function \code double f(double) \endcode.
Example:
\code
#include "itbase.h"
double f(const double x)
{
return x*log(x);
}
int main()
{
double res = quad( f, 1.5, 3.5);
cout << "res = " << res << endl;
return 0;
}
\endcode
References:
[Gander] Gander, W. and W. Gautschi, "Adaptive Quadrature - Revisited", BIT, Vol. 40, 2000, pp. 84-101.
This document is also available at http:// www.inf.ethz.ch/personal/gander.
*/
double quad(double (*f)(double), const double a, const double b, const double tol=std::numeric_limits<double>::epsilon());
/*!
1-dimensional numerical adaptive Lobatto quadrature integration
Calculate the 1-dimensional integral
\f[
\int_a^b f(x) dx
\f]
Uses an adaptive Lobatto quadrature method. See [Gander] for more details. The integrand is
specified as a function \code double f(double) \endcode.
Example:
\code
#include "itbase.h"
double f(const double x)
{
return x*log(x);
}
int main()
{
double res = quadl( f, 1.5, 3.5);
cout << "res = " << res << endl;
return 0;
}
\endcode
References:
[Gander] Gander, W. and W. Gautschi, "Adaptive Quadrature - Revisited", BIT, Vol. 40, 2000, pp. 84-101.
This document is also available at http:// www.inf.ethz.ch/personal/gander.
*/
double quadl(double (*f)(double), const double a, const double b, const double tol=std::numeric_limits<double>::epsilon());
//@}
} // namespace itpp
#endif
syntax highlighted by Code2HTML, v. 0.9.1