public class CsInterpolate extends Spline
CsInterpolate
computes a \(C^2\) cubic spline
interpolant to a set of data points \((x_i, f_i)\) for
\(i = 0, \ldots, n-1\). The breakpoints of the spline are the
abscissas. Endpoint conditions can be automatically determined by the program,
or explicitly specified by using the appropriate constructor. Constructors are
provided that allow setting specific values for first or second derivative values
at the endpoints, or for specifying conditions that correspond to the "not-a-knot"
condition (see de Boor 1978).
The "not-a-knot" conditions require that the third derivative of the spline be continuous at the second and next-to-last breakpoint. If n is 2 or 3, then the linear or quadratic interpolating polynomial is computed, respectively.
If the data points arise from the values of a smooth, say, \(C^4\) function f, i.e. \(f_i = f(x_i)\), then the error will behave in a predictable fashion. Let \(\xi\) be the breakpoint vector for the above spline interpolant. Then, the maximum absolute error satisfies
$$ |f-s|_{[\xi_0,\xi_n]} \le C \left\|f^{(4)}\right\|_{[{\xi_0 ,\xi_n }]} |\xi|^4 $$where
$$|\xi|\;: = \max_{i=0,\ldots,n-1} \left|\xi_{i+1} - \xi_i \right|$$For more details, see de Boor (1978, pages 55-56).
Modifier and Type | Field and Description |
---|---|
static int |
FIRST_DERIVATIVE |
static int |
NOT_A_KNOT |
static int |
SECOND_DERIVATIVE |
breakPoint, coef, EPSILON_LARGE
Constructor and Description |
---|
CsInterpolate(double[] xData,
double[] yData)
Constructs a cubic spline that interpolates the given
data points.
|
CsInterpolate(double[] xData,
double[] yData,
int typeLeft,
double valueLeft,
int typeRight,
double valueRight)
Constructs a cubic spline that interpolates the given
data points with specified derivative endpoint conditions.
|
copyAndSortData, copyAndSortData, derivative, derivative, derivative, getBreakpoints, integral, value, value
public static final int NOT_A_KNOT
public static final int FIRST_DERIVATIVE
public static final int SECOND_DERIVATIVE
public CsInterpolate(double[] xData, double[] yData)
xData
- A double
array containing the x-coordinates of the data.
Values must be distinct.yData
- A double
array containing the y-coordinates of the data.
The arrays xData and yData must have the same length.public CsInterpolate(double[] xData, double[] yData, int typeLeft, double valueLeft, int typeRight, double valueRight)
xData
- A double
array containing the x-coordinates of the
data. Values must be distinct.yData
- A double
array containing the y-coordinates of the
data.
The arrays xData and yData must have
the same length.typeLeft
- An int
denoting the type of condition at the left endpoint.
This can be NOT_A_KNOT
, FIRST_DERIVATIVE
or SECOND_DERIVATIVE
.valueLeft
- A double
value at the left endpoint.
If typeLeft
is NOT_A_KNOT
this is ignored,
Otherwise, it is the value of the specified
derivative.typeRight
- An int
denoting the type of condition at the right
endpoint.
This can be NOT_A_KNOT
, FIRST_DERIVATIVE
or SECOND_DERIVATIVE
.valueRight
- A double
value at the right endpoint.Copyright © 2020 Rogue Wave Software. All rights reserved.