Class PolynomialFunctionLagrangeForm
- All Implemented Interfaces:
UnivariateRealFunction
The approximated function should be smooth enough for Lagrange polynomial to work well. Otherwise, consider using splines instead.
- Since:
- 1.2
- Version:
- $Revision: 1073498 $ $Date: 2011-02-22 21:57:26 +0100 (mar. 22 févr. 2011) $
-
Constructor Summary
ConstructorsConstructorDescriptionPolynomialFunctionLagrangeForm
(double[] x, double[] y) Construct a Lagrange polynomial with the given abscissas and function values. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
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[]
Returns a copy of the coefficients array.double[]
Returns a copy of the interpolating points array.double[]
Returns a copy of the interpolating values array.double
value
(double z) Compute the value for the function.static void
verifyInterpolationArray
(double[] x, double[] y) Verifies that the interpolation arrays are valid.
-
Constructor Details
-
PolynomialFunctionLagrangeForm
Construct a Lagrange polynomial with the given abscissas and function values. The order of interpolating points are not important.The constructor makes copy of the input arrays and assigns them.
- Parameters:
x
- interpolating pointsy
- function values at interpolating points- Throws:
IllegalArgumentException
- if input arrays are not valid
-
-
Method Details
-
value
Compute the value for the function.- Specified by:
value
in interfaceUnivariateRealFunction
- Parameters:
z
- the point for which the function value should be computed- Returns:
- the value
- Throws:
FunctionEvaluationException
- if the function evaluation fails
-
degree
public int degree()Returns the degree of the polynomial.- Returns:
- the degree of the polynomial
-
getInterpolatingPoints
public double[] getInterpolatingPoints()Returns a copy of the interpolating points array.Changes made to the returned copy will not affect the polynomial.
- Returns:
- a fresh copy of the interpolating points array
-
getInterpolatingValues
public double[] getInterpolatingValues()Returns a copy of the interpolating values array.Changes made to the returned copy will not affect the polynomial.
- Returns:
- a fresh copy of the interpolating values array
-
getCoefficients
public double[] getCoefficients()Returns a copy of the coefficients array.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.
- Returns:
- a fresh copy of the coefficients array
-
evaluate
public static double evaluate(double[] x, double[] y, double z) throws DuplicateSampleAbscissaException, IllegalArgumentException Evaluate the Lagrange polynomial using Neville's Algorithm. It takes O(N^2) time.This function is made public static so that users can call it directly without instantiating PolynomialFunctionLagrangeForm object.
- Parameters:
x
- the interpolating points arrayy
- the interpolating values arrayz
- the point at which the function value is to be computed- Returns:
- the function value
- Throws:
DuplicateSampleAbscissaException
- if the sample has duplicate abscissasIllegalArgumentException
- if inputs are not valid
-
computeCoefficients
Calculate the coefficients of Lagrange polynomial from the interpolation data. It takes O(N^2) time.Note this computation can be ill-conditioned. Use with caution and only when it is necessary.
- Throws:
ArithmeticException
- if any abscissas coincide
-
verifyInterpolationArray
Verifies that the interpolation arrays are valid.The arrays features checked by this method are that both arrays have the same length and this length is at least 2.
The interpolating points must be distinct. However it is not verified here, it is checked in evaluate() and computeCoefficients().
- Parameters:
x
- the interpolating points arrayy
- the interpolating values array- Throws:
IllegalArgumentException
- if not valid- See Also:
-