Class AkimaSplineInterpolator
java.lang.Object
org.hipparchus.analysis.interpolation.AkimaSplineInterpolator
- All Implemented Interfaces:
FieldUnivariateInterpolator
,UnivariateInterpolator
public class AkimaSplineInterpolator
extends Object
implements UnivariateInterpolator, FieldUnivariateInterpolator
Computes a cubic spline interpolation for the data set using the Akima
algorithm, as originally formulated by Hiroshi Akima in his 1970 paper
A New Method of
Interpolation and Smooth Curve Fitting Based on Local Procedures.
J. ACM 17, 4 (October 1970), 589-602. DOI=10.1145/321607.321609
This implementation is based on the Akima implementation in the CubicSpline class in the Math.NET Numerics library. The method referenced is CubicSpline.InterpolateAkimaSorted
The interpolate
method returns a
PolynomialSplineFunction
consisting of n cubic polynomials, defined
over the subintervals determined by the x values, x[0] < x[i] ... < x[n]
.
The Akima algorithm requires that n >= 5
.
-
Constructor Summary
ConstructorDescriptionSimple constructor.AkimaSplineInterpolator
(boolean useModifiedWeights) Simple constructor. -
Method Summary
Modifier and TypeMethodDescriptioninterpolate
(double[] xvals, double[] yvals) Computes an interpolating function for the data set.<T extends CalculusFieldElement<T>>
FieldPolynomialSplineFunction<T>interpolate
(T[] xvals, T[] yvals) Computes an interpolating function for the data set.
-
Constructor Details
-
AkimaSplineInterpolator
public AkimaSplineInterpolator()Simple constructor.This constructor is equivalent to call
AkimaSplineInterpolator(false)
, i.e. to use original Akima weights- Since:
- 2.1
-
AkimaSplineInterpolator
public AkimaSplineInterpolator(boolean useModifiedWeights) Simple constructor.The weight modification is described in Makima Piecewise Cubic Interpolation. It attempts to avoid overshoots near near constant slopes sub-samples.
- Parameters:
useModifiedWeights
- if true, use modified weights to avoid overshoots- Since:
- 2.1
-
-
Method Details
-
interpolate
public PolynomialSplineFunction interpolate(double[] xvals, double[] yvals) throws MathIllegalArgumentException Computes an interpolating function for the data set.- Specified by:
interpolate
in interfaceUnivariateInterpolator
- Parameters:
xvals
- the arguments for the interpolation pointsyvals
- the values for the interpolation points- Returns:
- a function which interpolates the data set
- Throws:
MathIllegalArgumentException
- ifxvals
andyvals
have different sizes.MathIllegalArgumentException
- ifxvals
is not sorted in strict increasing order.MathIllegalArgumentException
- if the size ofxvals
is smaller than 5.
-
interpolate
public <T extends CalculusFieldElement<T>> FieldPolynomialSplineFunction<T> interpolate(T[] xvals, T[] yvals) throws MathIllegalArgumentException Computes an interpolating function for the data set.- Specified by:
interpolate
in interfaceFieldUnivariateInterpolator
- Type Parameters:
T
- the type of the field elements- Parameters:
xvals
- the arguments for the interpolation pointsyvals
- the values for the interpolation points- Returns:
- a function which interpolates the data set
- Throws:
MathIllegalArgumentException
- ifxvals
andyvals
have different sizes.MathIllegalArgumentException
- ifxvals
is not sorted in strict increasing order.MathIllegalArgumentException
- if the size ofxvals
is smaller than 5.- Since:
- 1.5
-