public class PolynomialFunctionLagrangeForm extends Object implements UnivariateFunction
The approximated function should be smooth enough for Lagrange polynomial to work well. Otherwise, consider using splines instead.
| Constructor and Description |
|---|
PolynomialFunctionLagrangeForm(double[] x,
double[] y)
Construct a Lagrange polynomial with the given abscissas and function
values.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
computeCoefficients()
Calculate the coefficients of Lagrange polynomial from the
interpolation data.
|
int |
degree()
Returns the degree of the polynomial.
|
static double |
evaluate(double[] x,
double[] y,
double z)
Evaluate the Lagrange polynomial using
Neville's Algorithm.
|
double[] |
getCoefficients()
Returns a copy of the coefficients array.
|
double[] |
getInterpolatingPoints()
Returns a copy of the interpolating points array.
|
double[] |
getInterpolatingValues()
Returns a copy of the interpolating values array.
|
double |
value(double z)
Calculate the function value at the given point.
|
static boolean |
verifyInterpolationArray(double[] x,
double[] y,
boolean abort)
Check that the interpolation arrays are valid.
|
public PolynomialFunctionLagrangeForm(double[] x, double[] y) throws DimensionMismatchException, NumberIsTooSmallException, NonMonotonicSequenceException
The constructor makes copy of the input arrays and assigns them.
x - interpolating pointsy - function values at interpolating pointsDimensionMismatchException - if the array lengths are different.NumberIsTooSmallException - if the number of points is less than 2.NonMonotonicSequenceException - if two abscissae have the same value.public double value(double z)
value in interface UnivariateFunctionz - Point at which the function value is to be computed.DimensionMismatchException - if x and y have
different lengths.NonMonotonicSequenceException - if x is not sorted in strictly increasing order.NumberIsTooSmallException - if the size of x is less
than 2.public int degree()
public double[] getInterpolatingPoints()
Changes made to the returned copy will not affect the polynomial.
public double[] getInterpolatingValues()
Changes made to the returned copy will not affect the polynomial.
public double[] getCoefficients()
Changes made to the returned copy will not affect the polynomial.
Note that coefficients computation can be ill-conditioned. Use with caution and only when it is necessary.
public static double evaluate(double[] x, double[] y, double z) throws DimensionMismatchException, NumberIsTooSmallException, NonMonotonicSequenceException
x - Interpolating points array.y - Interpolating values array.z - Point at which the function value is to be computed.DimensionMismatchException - if x and y have
different lengths.NonMonotonicSequenceException - if x is not sorted in strictly increasing order.NumberIsTooSmallException - if the size of x is less
than 2.protected void computeCoefficients()
public static boolean verifyInterpolationArray(double[] x, double[] y, boolean abort) throws DimensionMismatchException, NumberIsTooSmallException, NonMonotonicSequenceException
x - Interpolating points array.y - Interpolating values array.abort - Whether to throw an exception if x is not sorted.false if the x is not sorted in increasing order,
true otherwise.DimensionMismatchException - if the array lengths are different.NumberIsTooSmallException - if the number of points is less than 2.NonMonotonicSequenceException - if x is not sorted in strictly increasing order and abort
is true.evaluate(double[], double[], double),
computeCoefficients()Copyright © 2003–2016 The Apache Software Foundation. All rights reserved.