Class FieldHermiteInterpolator<T extends FieldElement<T>>

java.lang.Object
org.apache.commons.math3.analysis.interpolation.FieldHermiteInterpolator<T>
Type Parameters:
T - Type of the field elements.

public class FieldHermiteInterpolator<T extends FieldElement<T>> extends Object
Polynomial interpolator using both sample values and sample derivatives.

The interpolation polynomials match all sample points, including both values and provided derivatives. There is one polynomial for each component of the values vector. All polynomials have the same degree. The degree of the polynomials depends on the number of points and number of derivatives at each point. For example the interpolation polynomials for n sample points without any derivatives all have degree n-1. The interpolation polynomials for n sample points with the two extreme points having value and first derivative and the remaining points having value only all have degree n+1. The interpolation polynomial for n sample points with value, first and second derivative for all points all have degree 3n-1.

Since:
3.2
  • Field Details

    • abscissae

      private final List<T extends FieldElement<T>> abscissae
      Sample abscissae.
    • topDiagonal

      private final List<T extends FieldElement<T>[]> topDiagonal
      Top diagonal of the divided differences array.
    • bottomDiagonal

      private final List<T extends FieldElement<T>[]> bottomDiagonal
      Bottom diagonal of the divided differences array.
  • Constructor Details

    • FieldHermiteInterpolator

      public FieldHermiteInterpolator()
      Create an empty interpolator.
  • Method Details

    • addSamplePoint

      public void addSamplePoint(T x, T[]... value) throws ZeroException, MathArithmeticException, DimensionMismatchException, NullArgumentException
      Add a sample point.

      This method must be called once for each sample point. It is allowed to mix some calls with values only with calls with values and first derivatives.

      The point abscissae for all calls must be different.

      Parameters:
      x - abscissa of the sample point
      value - value and derivatives of the sample point (if only one row is passed, it is the value, if two rows are passed the first one is the value and the second the derivative and so on)
      Throws:
      ZeroException - if the abscissa difference between added point and a previous point is zero (i.e. the two points are at same abscissa)
      MathArithmeticException - if the number of derivatives is larger than 20, which prevents computation of a factorial
      DimensionMismatchException - if derivative structures are inconsistent
      NullArgumentException - if x is null
    • value

      public T[] value(T x) throws NoDataException, NullArgumentException
      Interpolate value at a specified abscissa.
      Parameters:
      x - interpolation abscissa
      Returns:
      interpolated value
      Throws:
      NoDataException - if sample is empty
      NullArgumentException - if x is null
    • derivatives

      public T[][] derivatives(T x, int order) throws NoDataException, NullArgumentException
      Interpolate value and first derivatives at a specified abscissa.
      Parameters:
      x - interpolation abscissa
      order - maximum derivation order
      Returns:
      interpolated value and derivatives (value in row 0, 1st derivative in row 1, ... nth derivative in row n)
      Throws:
      NoDataException - if sample is empty
      NullArgumentException - if x is null