hmatrix-gsl-0.19.0.1: Numerical computation

Numeric.GSL.Interpolation

Description

Interpolation routines.

https://www.gnu.org/software/gsl/manual/html_node/Interpolation.html#Interpolation

The GSL routines gsl_spline_eval and friends are used, but in spite of the names, they are not restricted to spline interpolation. The functions in this module will work for any InterpolationMethod.

Synopsis

# Interpolation methods

Constructors

 Linear Polynomial CSpline CSplinePeriodic Akima AkimaPeriodic

Instances

 Source # Methods Source # Methods Source # Methods

# Evaluation of interpolated functions

Arguments

 :: InterpolationMethod What method to use to interpolate -> [(Double, Double)] (domain, range) values sampling the function -> Double Point at which to evaluate the function -> Double Interpolated result

Evaluate a function by interpolating within the given dataset. For example:

>>> let xs = [1..10]
>>> let ys map (**2) [1..10]
>>> evaluate Akima (zip xs ys) 2.2
4.840000000000001


To successfully evaluate points x, the domain (x) values in points must be monotonically increasing. The evaluation point x must lie between the smallest and largest values in the sampled domain.

Arguments

 :: InterpolationMethod What method to use to interpolate -> Vector Double Data points sampling the domain of the function -> Vector Double Data points sampling the range of the function -> Double Point at which to evaluate the function -> Double Interpolated result

Evaluate a function by interpolating within the given dataset. For example:

>>> let xs = vector [1..10]
>>> let ys = vector $map (**2) [1..10] >>> evaluateV CSpline xs ys 2.2 4.818867924528303  To successfully evaluateV xs ys x, the vectors of corresponding domain-range values xs and ys must have identical lengths, and xs must be monotonically increasing. The evaluation point x must lie between the smallest and largest values in xs. # Evaluation of derivatives of interpolated functions Arguments  :: InterpolationMethod What method to use to interpolate -> [(Double, Double)] (domain, range) points sampling the function -> Double Point x at which to evaluate the derivative -> Double Interpolated result Evaluate the derivative of a function by interpolating within the given dataset. For example: >>> let xs = [1..10] >>> let ys map (**2) [1..10] >>> evaluateDerivative Akima (zip xs ys) 2.2 4.4  To successfully evaluateDerivative points x, the domain (x) values in points must be monotonically increasing. The evaluation point x must lie between the smallest and largest values in the sampled domain. Arguments  :: InterpolationMethod What method to use to interpolate -> [(Double, Double)] (domain, range) points sampling the function -> Double Point x at which to evaluate the second derivative -> Double Interpolated result Evaluate the second derivative of a function by interpolating within the given dataset. For example: >>> let xs = [1..10] >>> let ys map (**2) [1..10] >>> evaluateDerivative2 Akima (zip xs ys) 2.2 2.0  To successfully evaluateDerivative2 points x, the domain (x) values in points must be monotonically increasing. The evaluation point x must lie between the smallest and largest values in the sampled domain. Arguments  :: InterpolationMethod What method to use to interpolate -> Vector Double Data points xs sampling the domain of the function -> Vector Double Data points ys sampling the range of the function -> Double Point x at which to evaluate the derivative -> Double Interpolated result Evaluate the derivative of a function by interpolating within the given dataset. For example: >>> let xs = vector [1..10] >>> let ys = vector$ map (**2) [1..10]
>>> evaluateDerivativeV CSpline xs ys 2.2
4.338867924528302


To successfully evaluateDerivativeV xs ys x, the vectors of corresponding domain-range values xs and ys must have identical lengths, and xs must be monotonically increasing. The interpolation point x must lie between the smallest and largest values in xs.

Arguments

 :: InterpolationMethod What method to use to interpolate -> Vector Double Data points xs sampling the domain of the function -> Vector Double Data points ys sampling the range of the function -> Double Point x at which to evaluate the second derivative -> Double Interpolated result

Evaluate the second derivative of a function by interpolating within the given dataset. For example:

>>> let xs = vector [1..10]
>>> let ys = vector $map (**2) [1..10] >>> evaluateDerivative2V CSpline xs ys 2.2 2.4  To successfully evaluateDerivative2V xs ys x, the vectors xs and ys must have identical lengths, and xs must be monotonically increasing. The evaluation point x must lie between the smallest and largest values in xs. # Evaluation of integrals of interpolated functions Arguments  :: InterpolationMethod What method to use to interpolate -> [(Double, Double)] (domain, range) points sampling the function -> (Double, Double) Integration bounds (a, b) -> Double Resulting area Evaluate the definite integral of a function by interpolating within the given dataset. For example: >>> let xs = [1..10] >>> let ys = map (**2) [1..10] >>> evaluateIntegralV CSpline (zip xs ys) (2.2, 5.5) 51.909  To successfully evaluateIntegral points (a, b), the domain (x) values of points must be monotonically increasing. The integration bounds a and b must lie between the smallest and largest values in the sampled domain.. Arguments  :: InterpolationMethod What method to use to interpolate -> Vector Double Data points xs sampling the domain of the function -> Vector Double Data points ys sampling the range of the function -> Double Lower integration bound a -> Double Upper integration bound b -> Double Resulting area Evaluate the definite integral of a function by interpolating within the given dataset. For example: >>> let xs = vector [1..10] >>> let ys = vector$ map (**2) [1..10]
>>> evaluateIntegralV CSpline xs ys 2.2 5.5
51.89853207547169


To successfully evaluateIntegralV xs ys a b, the vectors xs and ys must have identical lengths, and xs must be monotonically increasing. The integration bounds a and b must lie between the smallest and largest values in xs.