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