# 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.

• ## Constructor Summary

Constructors
Constructor
Description
DividedDifferenceInterpolator()
Empty constructor.
• ## Method Summary

Modifier and Type
Method
Description
protected static double[]
computeDividedDifference(double[] x, double[] y)
Return a copy of the divided difference array.
PolynomialFunctionNewtonForm
interpolate(double[] x, double[] y)
Compute an interpolating function for the dataset.

### Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• ## 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 interface UnivariateInterpolator
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 - if x 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 and y.

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 - if x is not sorted in strictly increasing order.