|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math3.analysis.interpolation.HermiteInterpolator
public class HermiteInterpolator
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.
Field Summary | |
---|---|
private java.util.List<java.lang.Double> |
abscissae
Sample abscissae. |
private java.util.List<double[]> |
bottomDiagonal
Bottom diagonal of the divided differences array. |
private java.util.List<double[]> |
topDiagonal
Top diagonal of the divided differences array. |
Constructor Summary | |
---|---|
HermiteInterpolator()
Create an empty interpolator. |
Method Summary | |
---|---|
void |
addSamplePoint(double x,
double[]... value)
Add a sample point. |
private void |
checkInterpolation()
Check interpolation can be performed. |
PolynomialFunction[] |
getPolynomials()
Compute the interpolation polynomials. |
private PolynomialFunction |
polynomial(double... c)
Create a polynomial from its coefficients. |
DerivativeStructure[] |
value(DerivativeStructure x)
Interpolate value at a specified abscissa. |
double[] |
value(double x)
Interpolate value at a specified abscissa. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final java.util.List<java.lang.Double> abscissae
private final java.util.List<double[]> topDiagonal
private final java.util.List<double[]> bottomDiagonal
Constructor Detail |
---|
public HermiteInterpolator()
Method Detail |
---|
public void addSamplePoint(double x, double[]... value) throws ZeroException, MathArithmeticException
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.
x
- abscissa of the sample pointvalue
- 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)
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 factorialpublic PolynomialFunction[] getPolynomials() throws NoDataException
NoDataException
- if sample is emptypublic double[] value(double x) throws NoDataException
Calling this method is equivalent to call the value
methods of all polynomials returned by getPolynomials
,
except it does not build the intermediate polynomials, so this method is faster and
numerically more stable.
value
in interface UnivariateVectorFunction
x
- interpolation abscissa
NoDataException
- if sample is emptypublic DerivativeStructure[] value(DerivativeStructure x) throws NoDataException
Calling this method is equivalent to call the value
methods of all polynomials
returned by getPolynomials
, except it does not build the
intermediate polynomials, so this method is faster and numerically more stable.
value
in interface UnivariateDifferentiableVectorFunction
x
- interpolation abscissa
NoDataException
- if sample is emptyprivate void checkInterpolation() throws NoDataException
NoDataException
- if interpolation cannot be performed
because sample is emptyprivate PolynomialFunction polynomial(double... c)
c
- polynomials coefficients
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |