Spline Toolbox    
spap2

Least-squares spline approximation

Syntax

Description

Returns the spline f of order k with knot sequence knots for which

in the weighted mean-square sense, meaning that the sum

is minimized, with default weights equal to 1. If the sites x satisfy the (Schoenberg-Whitney) conditions

then there is a unique spline (of the given order and knot sequence) satisfying (*) exactly. No spline is returned unless (**) is satisfied for some subsequence of x.

Since the proper choice of the knot sequesnce may be a challenge at times, it is also acceptable to input, instead of the sequence knots, the integer 1 giving the number of polynomial pieces to be used, in which case spap2 provides a knot sequence suitable for that.

It is also possible to fit to gridded data. If knots is a cell array with m entries, then also x must be a cell array with m entries, as must w be (if given). Further, then also k must be an m-vector, and y must be an (m+1)-dimensional array, with y(:,i1,...,im) the datum to be fitted at the m-vector [x{1}(i1),...,x{m}(im)], all i1, ..., im. However, if the spline is to be scalar-valued, then, in contrast to the univariate case, y is permitted to be an m-dimensional array, in which case y(i1,...,im) the datum to be fitted at the m-vector [x{1}(i1),...,x{m}(im)], all i1, ..., im.

Examples

is the least-squares approximant to the data x, y, by cubic splines with two continuous derivatives, basic interval [a..b], and interior breaks xi, provided xi has all its entries in (a..b) and the conditions (**) are satisfied in some fashion. In that case, the approximant consists of l=length(xi)+1 polynomial pieces. If you do not want to worry about the conditions (**) but merely want to get a cubic spline approximant consisting of 1 polynomial pieces, use instead

If the resulting approximation is not satisfactory, try using a larger 1. Else use

for a possible better distribution of the knot sequence. In fact, if that helps, repeating it may help even more.

As another example, spap2(1, 2, x, y); provides the least-squares straight-line fit to data x,y, while

forces that fit to come very close to the first data point and to the last.

Algorithm

spcol is called on to provide the almost block-diagonal collocation matrix , and slvblk solves the linear system (*) in the (weighted) least-squares sense, using a block QR factorization.

If only the number of polynomial pieces is specified, then an appropriate knot sequence is obtained by applying aptknt to an appropriate subsequence of the data sites x.

Gridded data is fitted, in tensor-product fashion, one variable at a time, taking advantage of the fact that a univariate weighted least-squares fit depends linearly on the values being fitted.

See Also

spapi, slvblk, spcol


 sorted spapi