Cantera
3.1.0a1
|
Collection of numerical utility functions for integration, interpolation and data fitting. More...
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. More... | |
double | trapezoidal (const Eigen::ArrayXd &f, const Eigen::ArrayXd &x) |
Numerical integration of a function using the trapezoidal rule. More... | |
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. More... | |
double | numericalQuadrature (const string &method, const Eigen::ArrayXd &f, const Eigen::ArrayXd &x) |
Numerical integration of a function. More... | |
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. More... | |
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.
x | value of the x coordinate |
xpts | value of the grid points |
fpts | value of the interpolant at the grid points |
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.
f | vector of function value |
x | vector of function coordinate |
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.
f | vector of function value |
x | vector of function coordinate |
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.
method | method name |
f | vector of function value |
x | vector of function coordinate |
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 \]
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. |
Definition at line 14 of file polyfit.cpp.