Class DividedDifferenceInterpolator
java.lang.Object
org.hipparchus.analysis.interpolation.DividedDifferenceInterpolator
- All Implemented Interfaces:
Serializable
,UnivariateInterpolator
public class DividedDifferenceInterpolator
extends Object
implements UnivariateInterpolator, Serializable
Implements the
Divided Difference Algorithm for interpolation of real univariate
functions. For reference, see Introduction to Numerical Analysis,
ISBN 038795452X, chapter 2.
The actual code of Neville's evaluation is in PolynomialFunctionLagrangeForm, this class provides an easy-to-use interface to it.
- See Also:
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected static double[]
computeDividedDifference
(double[] x, double[] y) Return a copy of the divided difference array.interpolate
(double[] x, double[] y) Compute an interpolating function for the dataset.
-
Constructor Details
-
DividedDifferenceInterpolator
public DividedDifferenceInterpolator()Empty constructor.This constructor is not strictly necessary, but it prevents spurious javadoc warnings with JDK 18 and later.
- Since:
- 3.0
-
-
Method Details
-
interpolate
public PolynomialFunctionNewtonForm interpolate(double[] x, double[] y) throws MathIllegalArgumentException Compute an interpolating function for the dataset.- Specified by:
interpolate
in interfaceUnivariateInterpolator
- Parameters:
x
- Interpolating points array.y
- Interpolating values array.- Returns:
- a function which interpolates the dataset.
- Throws:
MathIllegalArgumentException
- if the array lengths are different.MathIllegalArgumentException
- if the number of points is less than 2.MathIllegalArgumentException
- ifx
is not sorted in strictly increasing order.
-
computeDividedDifference
protected static double[] computeDividedDifference(double[] x, double[] y) throws MathIllegalArgumentException Return a copy of the divided difference array.The divided difference array is defined recursively by
f[x0] = f(x0) f[x0,x1,...,xk] = (f[x1,...,xk] - f[x0,...,x[k-1]]) / (xk - x0)
The computational complexity is \(O(n^2)\) where \(n\) is the common length of
x
andy
.- Parameters:
x
- Interpolating points array.y
- Interpolating values array.- Returns:
- a fresh copy of the divided difference array.
- Throws:
MathIllegalArgumentException
- if the array lengths are different.MathIllegalArgumentException
- if the number of points is less than 2.MathIllegalArgumentException
- ifx
is not sorted in strictly increasing order.
-