Class BsLeastSquares
- All Implemented Interfaces:
Serializable,Cloneable
Let's make the identifications
n = xData.length
x = xData
f = yData
m = nCoef
k = order
For convenience, we assume that the sequence x is increasing, although the class does not require this.
By default, k = 4, and the knot sequence we select equally distributes the knots through the distinct \({x_i}'s\). In particular, the m + k knots will be generated in \([x_1, x_n]\) with k knots stacked at each of the extreme values. The interior knots will be equally spaced in the interval.
Once knots \({\bf t}\) and weights w are determined, then the spline least-squares fit to the data is computed by minimizing over the linear coefficients \(a_j\)
$$\sum_{i=0}^{n-1} {w_i\biggl[f_i-\sum_{j=1}^{m}{a_jB_j(x_i)}\biggr]^2}$$
where the \(B_j, j = 1, ..., m\) are a (B-spline) basis for the spline subspace.
This algorithm is based on the routine L2APPR by deBoor (1978, p. 255).
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected intNumber of B-spline coefficients.protected double[]The weight array of length n, where n is the number of data points fit. -
Constructor Summary
ConstructorsConstructorDescriptionBsLeastSquares(double[] xData, double[] yData, int nCoef) Constructs a least squares B-spline approximation to the given data points.BsLeastSquares(double[] xData, double[] yData, int nCoef, int order) Constructs a least squares B-spline approximation to the given data points.BsLeastSquares(double[] xData, double[] yData, int nCoef, int order, double[] weight, double[] knot) Constructs a least squares B-spline approximation to the given data points. -
Method Summary
Methods inherited from class com.imsl.math.BSpline
derivative, derivative, derivative, getKnots, getSpline, integral, value, value
-
Field Details
-
nCoef
protected int nCoefNumber of B-spline coefficients. -
weight
protected double[] weightThe weight array of length n, where n is the number of data points fit.
-
-
Constructor Details
-
BsLeastSquares
public BsLeastSquares(double[] xData, double[] yData, int nCoef) Constructs a least squares B-spline approximation to the given data points.- Parameters:
xData- Adoublearray containing the x-coordinates of the data.yData- Adoublearray containing the y-coordinates of the data. The arrays xData and yData must have the same length.nCoef- Anintdenoting the linear dimension of the spline subspace. It should be smaller than the number of data points and greater than or equal to the order of the spline (whose default value is 4).
-
BsLeastSquares
public BsLeastSquares(double[] xData, double[] yData, int nCoef, int order) Constructs a least squares B-spline approximation to the given data points.- Parameters:
xData- Adoublearray containing the x-coordinates of the data.yData- Adoublearray containing the y-coordinates of the data. The arrays xData and yData must have the same length.nCoef- Anintdenoting the linear dimension of the spline subspace. It should be smaller than the number of data points and greater than or equal to the order of the spline.order- Anintdenoting the order of the spline.
-
BsLeastSquares
public BsLeastSquares(double[] xData, double[] yData, int nCoef, int order, double[] weight, double[] knot) Constructs a least squares B-spline approximation to the given data points.- Parameters:
xData- Adoublearray containing the x-coordinates of the data.yData- Adoublearray containing the y-coordinates of the data. The arrays xData and yData must have the same length.nCoef- Anintdenoting the linear dimension of the spline subspace. It should be smaller than the number of data points and greater than or equal to the order of the spline.order- Anintdenoting the order of the spline.weight- Adoublearray containing the weights for the data. The arrays xData, yData and weights must have the same length.knot- Adoublearray containing the knot sequence for the spline.
-