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 http://doi.acm.org/10.1145/321607.321609This 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 aPolynomialSplineFunction
consisting of n cubic polynomials, defined over the subintervals determined by the x values,x[0] < x[i] ... < x[n]
. The Akima algorithm requires thatn >= 5
.
-
-
Constructor Summary
Constructors Constructor Description AkimaSplineInterpolator()
Simple constructor.AkimaSplineInterpolator(boolean useModifiedWeights)
Simple constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description PolynomialSplineFunction
interpolate(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 Detail
-
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 Detail
-
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
-
-