Numerical Integration and Interpolation#
Collection of numerical utility functions for integration, interpolation and data fitting. More...
Detailed Description
Collection of numerical utility functions for integration, interpolation and data fitting.
Functions | |
double | linearInterp (double x, const vector< double > &xpts, const vector< double > &fpts) |
Linearly interpolate a function defined on a discrete grid. | |
double | trapezoidal (const Eigen::ArrayXd &f, const Eigen::ArrayXd &x) |
Numerical integration of a function using the trapezoidal rule. | |
double | simpson (const Eigen::ArrayXd &f, const Eigen::ArrayXd &x) |
Numerical integration of a function using Simpson's rule with flexibility of taking odd and even number of points. | |
double | numericalQuadrature (const string &method, const Eigen::ArrayXd &f, const Eigen::ArrayXd &x) |
Numerical integration of a function. | |
double | polyfit (size_t n, size_t deg, const double *x, const double *y, const double *w, double *p) |
Fits a polynomial function to a set of data points. | |
Function Documentation
◆ linearInterp()
double linearInterp | ( | double | x, |
const vector< double > & | xpts, | ||
const vector< double > & | fpts | ||
) |
Linearly interpolate a function defined on a discrete grid.
Vector xpts contains a monotonic sequence of grid points, and vector fpts contains function values defined at these points. The value returned is the linear interpolate at point x. If x is outside the range of xpts, the value of fpts at the nearest end is returned.
- Parameters
-
x value of the x coordinate xpts value of the grid points fpts value of the interpolant at the grid points
- Returns
- the value of of the interpolated function at x.
◆ trapezoidal()
double trapezoidal | ( | const Eigen::ArrayXd & | f, |
const Eigen::ArrayXd & | x | ||
) |
Numerical integration of a function using the trapezoidal rule.
Vector x contains a monotonic sequence of grid points, and Vector f contains function values defined at these points. The size of x and f must be the same.
- Parameters
-
f vector of function value x vector of function coordinate
◆ simpson()
double simpson | ( | const Eigen::ArrayXd & | f, |
const Eigen::ArrayXd & | x | ||
) |
Numerical integration of a function using Simpson's rule with flexibility of taking odd and even number of points.
For even number, Simpson's rule is used for the first N-2 intervals with a trapezoidal rule on the last interval.
Vector x contains a monotonic sequence of grid points, and Vector f contains function values defined at these points. The size of x and f must be the same.
- Parameters
-
f vector of function value x vector of function coordinate
◆ numericalQuadrature()
double numericalQuadrature | ( | const string & | method, |
const Eigen::ArrayXd & | f, | ||
const Eigen::ArrayXd & | x | ||
) |
Numerical integration of a function.
Vector x contains a monotonic sequence of grid points, and Vector f contains function values defined at these points. The size of x and f must be the same.
- Parameters
-
method method name f vector of function value x vector of function coordinate
◆ polyfit()
double polyfit | ( | size_t | n, |
size_t | deg, | ||
const double * | x, | ||
const double * | y, | ||
const double * | w, | ||
double * | p | ||
) |
Fits a polynomial function to a set of data points.
Given a collection of n points x and a set of values y of some function evaluated at those points, this function computes the weighted least-squares polynomial fit of degree deg:
\[ f(x) = p[0] + p[1] x + p[2] x^2 + \cdots + p[deg] x^deg \]
- Parameters
-
n The number of points at which the function is evaluated deg The degree of the polynomial fit to be computed. deg <= n - 1. x Array of points at which the function is evaluated. Length n. y Array of function values at the points in x. Length n. w Array of weights. If w == nullptr or w[0] < 0, then all the weights will be set to 1.0. [out] p Array of polynomial coefficients, starting with the constant term. Length deg+1.
- Returns
- the root mean squared error of the fit at the input points.
Definition at line 14 of file polyfit.cpp.
Generated by 1.9.7