E210: Polynomial Splines / Normalized B-Splines

Author(s): W. Mönch, B. Schorr Library: MATHLIB
Submitter: W. Mönch Submitted: 15.03.1993
Language: Fortran Revised:

NORBAS (NORmalized BAsis Splines) is a portable collection of subprograms for various calculations with polynomial splines in one dimension (1D) and in two dimensions (2D). The polynomial splines are represented as linear combinations of normalized basis splines (B-splines).

On computers other than CDC or Cray, only the double-precision versions DSPKN1, etc. are available. On CDC and Cray computers, only the single-precision versions RSPKN1, etc. are available.

The following outline provides the background material and the notations needed for describing the subprograms and their parameters. For further information about splines and their applications see References, in particular Ref. 7.
Case (1D):

k
Degree (order -1) of the B-spline tex2html_wrap_inline651 .
m
Number of spline-knots tex2html_wrap_inline655 .
i
Index of the B-spline tex2html_wrap_inline659 .
tex2html_wrap_inline661
Set of m spline-knots tex2html_wrap_inline665 , in non-decreasing order, with multiplicity tex2html_wrap_inline667 (i.e. no more than k+1 knots coincide).
[a,b]
Interval, defined by tex2html_wrap_inline673 , tex2html_wrap_inline675 .
tex2html_wrap_inline677
Normalized B-spline of degree k over tex2html_wrap_inline681 with index i. The value of tex2html_wrap_inline685 is identically zero outside the interval tex2html_wrap_inline687 , and the normalization of tex2html_wrap_inline689 is such that

displaymath691

s(x)
Polynomial spline at tex2html_wrap_inline695 in B-spline representation

displaymath697

Spline interpolation to a data set:

Given a data set tex2html_wrap_inline699 ; determine coefficients tex2html_wrap_inline701 of a polynomial interpolation spline y = s(x) in B-spline representation with degree k over a set tex2html_wrap_inline707 of m=n+k+1 knots, such that the following relations (interpolation conditions) hold:

displaymath711

The existence of a solution of this interpolation problem depends on an appropriate choice of the spline-knots (Ref. 7, Theorem XIII.1 (Schoenberg-Whitney)).

Least squares spline approximation to a data set:

Given a data set tex2html_wrap_inline713 ; determine coefficients tex2html_wrap_inline715 of a polynomial approximation spline y = s(x) in B-spline representation with degree k over a set tex2html_wrap_inline721 of tex2html_wrap_inline723 knots, such that following least squares problem is solved:

displaymath725

Variation diminishing spline approximation to a function (Schoenberg):

For a given function y = f(x) on [a,b] this spline approximation is defined by y = s(x), with
(Ref. 7, p. 158-162)

displaymath733

Case (2D):

kx
Degree of one-dimensional B-splines in x-direction tex2html_wrap_inline739 .
ky
Degree of one-dimensional B-splines in y-direction tex2html_wrap_inline745 .
mx
Number of spline-knots in x-direction tex2html_wrap_inline751 .
my
Number of spline-knots in y-direction tex2html_wrap_inline757 .
i
Index of B-spline tex2html_wrap_inline761 in x-direction.
j
Index of B-spline tex2html_wrap_inline767 in y-direction.
tex2html_wrap_inline771
Set of mx spline-knots tex2html_wrap_inline775 in x-direction, in non-decreasing order, with multiplicity tex2html_wrap_inline779 (i.e. no more than kx+1 knots coincide).
tex2html_wrap_inline783
Set of my spline-knots tex2html_wrap_inline787 in y-direction, in non-decreasing order, with multiplicity tex2html_wrap_inline791 (i.e. no more than ky+1 knots coincide).
tex2html_wrap_inline795
Interval in x-direction, defined by tex2html_wrap_inline799 , tex2html_wrap_inline801 .
tex2html_wrap_inline803
Interval in y-direction, defined by tex2html_wrap_inline807 , tex2html_wrap_inline809 .
tex2html_wrap_inline811
B-spline of degree kx over tex2html_wrap_inline815 with index i.
tex2html_wrap_inline819
B-spline of degree ky over tex2html_wrap_inline823 with index j.
tex2html_wrap_inline827
Product tex2html_wrap_inline829 of two one-dimensional B-splines.
s(x,y)
Two-dimensional polynomial spline at tex2html_wrap_inline833 in B-spline representation

displaymath835

Spline interpolation to a data set:
Given a data set tex2html_wrap_inline837 ; determine coefficients tex2html_wrap_inline839 of a two-dimensional polynomial interpolation spline z = s(x,y) in B-spline representation with degrees kx , ky over the sets tex2html_wrap_inline847 of mx=nx+kx+1 knots in x-direction and tex2html_wrap_inline853 of my=ny+ky+1 knots in y-direction, such that following relations (interpolation conditions) hold:

displaymath859

The existence of a solution of this interpolation problem depends on an appropriate choice of the spline-knots tex2html_wrap_inline861 , tex2html_wrap_inline863 in the two-dimensional interpolation area tex2html_wrap_inline865 .

Least squares spline approximation to a data set:

Given a data set tex2html_wrap_inline867 ; determine coefficients tex2html_wrap_inline869 of a two-dimensional polynomial approximation spline z = s(x,y) in B-spline representation with degrees kx, ky over the sets tex2html_wrap_inline877 of tex2html_wrap_inline879 knots in x-direction and tex2html_wrap_inline883 of tex2html_wrap_inline885 knots in y-direction, such that following least squares problem is solved:

displaymath889

Variation diminishing spline approximation to a function:

For a given function z = f(x,y) on tex2html_wrap_inline893 this two-dimensional spline approximation is defined by z = s(x,y) on tex2html_wrap_inline897 , with

displaymath645

The package NORBAS contains FUNCTION and SUBROUTINE subprograms for solving the following problems. To calculate:

(K)
A set tex2html_wrap_inline899 of m spline-knots in the interval [a,b] for normalized B-splines tex2html_wrap_inline905 of degree k, use subprogram tSPKN1 (1D). The knots are in non-decreasing order and determined in such a way that the first k+1 knots coincide with a, the last k+1 knots coincide with b, and the remaining tex2html_wrap_inline917 knots are equidistant in (a,b).

Two sets tex2html_wrap_inline921 , tex2html_wrap_inline923 of spline-knots in tex2html_wrap_inline925 and tex2html_wrap_inline927 for B-splines tex2html_wrap_inline929 of degrees kx and ky in x- and y-direction, use subprogram tSPKN2 (2D). tex2html_wrap_inline939 and tex2html_wrap_inline941 , are calculated by the same formulae in x-, and y-direction, as in case (1D).

(B)
The function tex2html_wrap_inline947 ,

the n-th derivative tex2html_wrap_inline951 , or the integral tex2html_wrap_inline953

of a normalized B-spline tex2html_wrap_inline955 , with fixed degree k and index i over a set tex2html_wrap_inline961 of spline-knots, use subprogram: tSPNB1 (1D).

The function tex2html_wrap_inline963 ,

the partial derivative tex2html_wrap_inline965 , or the integral tex2html_wrap_inline967

of a two-dimensional B-spline tex2html_wrap_inline969 , with fixed degrees kx, ky and indices i, j over the sets tex2html_wrap_inline979 , tex2html_wrap_inline981 of spline-knots, use subprogram tSPNB2 (2D).
(P)
The function s(x),

the n-th derivative tex2html_wrap_inline987 , or the integral tex2html_wrap_inline989

of a polynomial spline y = s(x) in B-spline representation with given coefficients tex2html_wrap_inline993 , use subprogram tSPPS1 (1D).

The function s(x,y),

the partial derivative tex2html_wrap_inline997 , or the integral tex2html_wrap_inline999

of a two-dimensional polynomial spline z = s(x,y) in B-spline representation with given coefficients tex2html_wrap_inline1003 , use subprogram tSPPS2 (2D).
(I)
The coefficients tex2html_wrap_inline1005 of a one-dimensional polynomial interpolation spline y = s(x) in B-spline representation to a user-supplied data set tex2html_wrap_inline1009 , use subprogram tSPIN1 (1D).

The coefficients tex2html_wrap_inline1011 of a two-dimensional polynomial interpolation spline z = s(x,y) in B-spline representation to a user-supplied data set tex2html_wrap_inline1015 , use subprogram tSPIN2 (2D).

(A)
The coefficients tex2html_wrap_inline1017 of a one-dimensional polynomial least squares approximation spline y=s(x) in B-spline representation to a user-supplied data set tex2html_wrap_inline1021 , use subprogram tSPAP1 (1D).

The coefficients tex2html_wrap_inline1023 of a two-dimensional polynomial least squares approximation spline z=s(x,y) in B-spline representation to a user-supplied data set tex2html_wrap_inline1027 , use subprogram tSPAP2 (2D).

(V)
The coefficients tex2html_wrap_inline1029 of a one-dimensional polynomial variation diminishing spline approximation y = s(x) in B-spline representation to a user-supplied function y = f(x), use subprogram tSPVD1 (1D).

The coefficients tex2html_wrap_inline1035 of a two-dimensional polynomial variation diminishing spline approximation z = s(x,y) in B-spline representation to a user-supplied function z = f(x,y), use subprogram tSPVD2 (2D).

(D)
From given coefficients tex2html_wrap_inline1041 of a one-dimensional polynomial spline y = s(x) in B-spline representation, the corresponding coefficients tex2html_wrap_inline1045 of its n-th derivative tex2html_wrap_inline1049 in B-spline representation, use subprogram tSPCD1 (1D).

From given coefficients tex2html_wrap_inline1051 of a two-dimensional polynomial spline z = s(x,y) in B-spline representation, the corresponding coefficients tex2html_wrap_inline1055 of its partial derivative tex2html_wrap_inline1057 in B-spline representation, use subprogram tSPCD2 (2D).

Structure:

SUBROUTINE and FUNCTION subprograms
User Entry Names:
RSPKN1, RSPKN2, RSPNB1, RSPNB2, RSPPS1, RSPPS2, RSPIN1, RSPIN2,
RSPAP1, RSPAP2, RSPVD1, RSPVD2, RSPCD1, RSPCD2,
DSPKN1, DSPKN2, DSPNB1, DSPNB2, DSPPS1, DSPPS2, DSPIN1, DSPIN2,
DSPAP1, DSPAP2, DSPVD1, DSPVD2, DSPCD1, DSPCD2,

Internal Entry Names: RSPAS1, RSPAS2, RSPLKK, DSPAS1 DSPAS2, DSPLKK
Files Referenced: Unit 6
External References:
RGBTRF,RGBTRS,RGESVD,
DGBTRF,DGBTRS,DGESVD,
RVSET, RVSUM, RVCPY, RVMPY,
DVSET, DVSUM, DVCPY, DVMPY,
RMCPY, RMMPY, DMCPY, DMMPY,
MTLMTR,ABEND.
@l User-supplied FUNCTION subprogram

Usage:

For tex2html_wrap_inline1059 (type REAL), tex2html_wrap_inline1061 (type DOUBLE PRECISION):

(K) Knots

    CALL tSPKN1(K,M,A,B,T,NERR)
    CALL tSPKN2(KX,KY,MX,MY,AX,BX,AY,BY,TX,TY,NERR)
(B) Normalized B-splines
    tSPNB1(K,M,I,NDER,X,T,NERR)
    tSPNB2(KX,KY,MX,MY,I,J,NDERX,NDERY,X,Y,TX,TY,NERR)
(P) Polynomial spline
    tSPPS1(K,M,NDER,X,T,C,NERR)
    tSPPS2(KX,KY,MX,MY,NDERX,NDERY,X,Y,TX,TY,C,NDIMC,W,NERR)
(I) Spline interpolation
    CALL tSPIN1(K,N,XI,YI,KNOT,T,C,W,IW,NERR)
    CALL tSPIN2(KX,KY,NX,NY,XI,YI,ZI,NDIMZ,KNOT,TX,TY,C,NDIMC,W,IW,NERR)
(A) Least squares spline approximation
    CALL tSPAP1(K,M,N,XI,YI,KNOT,T,C,W,NW,NERR)
    CALL tSPAP2(KX,KY,MX,MY,NX,NY,XI,YI,ZI,NDIMZ,KNOT,TX,TY,C,NDIMC,W,NW,NERR)
(V) Variation diminishing spline approximation
    CALL tSPVD1(F,K,M,T,C,NERR)
    CALL tSPVD2(F,KX,KY,MX,MY,TX,TY,C,NDIMC,NERR)
(D) Coefficients of derivatives
    CALL tSPCD1(K,M,NDER,T,C,D,NERR)
    CALL tSPCD2(KX,KY,MX,MY,NDERX,NDERY,TX,TY,C,NDIMC,D,NERR)

Case (1D):

F
Name of a user-upplied FUNCTION subprogram, declared EXTERNAL in the calling program. This subprogram must provide the value of the function y = f(x) for variation diminishing spline approximation.
K
(INTEGER) Degree of B-splines ( tex2html_wrap_inline1065 for tSPVD1, tex2html_wrap_inline1067 otherwise).
M
(INTEGER) Number of knots ( tex2html_wrap_inline1069 ).
I
(INTEGER) Index of B-splines ( tex2html_wrap_inline1071 ).
N
(INTEGER) Number of data points tex2html_wrap_inline1073 ( tex2html_wrap_inline1075 for spline interpolation (tSPIN1); tex2html_wrap_inline1077 for spline approximation (tSPAP1)).
NDER
(INTEGER) Selects one out of three cases: (i) integral, (ii) function value, or (iii) derivative.
( tex2html_wrap_inline1079 for tSPNB1 and tSPPS1; tex2html_wrap_inline1081 for tSPCD1).
tex2html_wrap_inline1083 Calculation of the integral of tex2html_wrap_inline1085 (tSPNB1), or the integral of s(x) (tSPPS1).
tex2html_wrap_inline1089 Calculation of the function value tex2html_wrap_inline1091 (tSPNB1), or the function value s(x) (tSPPS1).
tex2html_wrap_inline1095 tex2html_wrap1383
X
(Type according to t) Independent variable x of polynomial spline s(x) or B-spline tex2html_wrap_inline1105 .
XI
(Type according to t) One-dimensional array of length tex2html_wrap_inline1107 . On entry, tex2html_wrap_inline1109 must contain the l-th data point tex2html_wrap_inline1113 for spline interpolation (tSPIN1) or spline approximation (tSPAP1). The data points must be in ascending order.
YI
(Type according to t) One-dimensional array of length tex2html_wrap_inline1115 . On entry, tex2html_wrap_inline1117 must contain the l-th data point tex2html_wrap_inline1121 for spline interpolation (tSPIN1) or spline approximation (tSPAP1).
KNOT
(INTEGER) Controls the mode of supplying the knots for spline interpolation or approximation.
tex2html_wrap_inline1123 tex2html_wrap1385
tex2html_wrap_inline1133 The knots must be supplied by the user.
A,B
(Type according to t) On entry, A and B must contain the left (right) end-point of the interval [a,b] for the calculation of a set of spline knots (tSPKN1).
T
(Type according to t) One-dimensional array of length tex2html_wrap_inline1137 .
For tSPKN1 and for tSPINT1, tSPAP1 if tex2html_wrap_inline1139 On exit, T(J) contains the j-th knot. In the other cases, on entry, T(J) must contain the j-th knot. The knots must be in non-decreasing order with multiplicity tex2html_wrap_inline1145 .
C
(Type according to t) One-dimensional array of length tex2html_wrap_inline1147 .
For tSPPS1 and tSPCD1: On entry, C(I) must contain the i-th coefficient tex2html_wrap_inline1151 of the polynomial spline s(x) in B-spline representation.
For tSPIN1, tSPAP1 and tSPVD1: On exit, C(I) contains the i-th coefficient tex2html_wrap_inline1157 of the polynomial interpolation or approximation spline s(x) in B-spline representation.
D
(Type according to t) One-dimensional array of length tex2html_wrap_inline1161 .
On exit, D(I) contains the coefficient tex2html_wrap_inline1163 of the NDER-th derivative of a polynomial spline s(x) in B-spline representation.
W
(Type according to t) One-dimensional array of length tex2html_wrap_inline1167 (tSPIN1), and of length tex2html_wrap_inline1169 (tSPAP1); used as working space.
NW
(INTEGER) Length of working array W, ( tex2html_wrap_inline1171 ).
IW
(INTEGER) One-dimensional array of length tex2html_wrap_inline1173 , used as working space.
NERR
(INTEGER) Error indicator. On exit:
tex2html_wrap_inline1175 No error or warning detected.
tex2html_wrap_inline1177 At least one of the parameters I, K, M, N, NDER is not in range or tex2html_wrap_inline1179 is not true.
tex2html_wrap_inline1181 tex2html_wrap1387
Case (2D):
F
Name of a user-upplied FUNCTION subprogram, declared EXTERNAL in the calling program. This subprogram must provide the value of the function z = f(x,y) for variation diminishing spline approximation.
KX,KY
(INTEGER) Degree of one-dimensional B-splines in x-(y-)direction ( tex2html_wrap_inline1189 for tSPVD2; tex2html_wrap_inline1191 otherwise).
MX,MY
(INTEGER) Number of knots in x-(y-)direction ( tex2html_wrap_inline1197 .
I,J
(INTEGER) Indices of B-splines ( tex2html_wrap_inline1199 ).
NX,NY
(INTEGER) Number of data points tex2html_wrap_inline1201 in x-(y-)direction ( tex2html_wrap_inline1207 for spline interpolation tSPIN2; tex2html_wrap_inline1209 for spline approximation tSPAP2).
NDERX,
(INTEGER) Selects one out of three cases: (i) integral, (ii) function value, or (iii) derivative.
NDERY
( tex2html_wrap_inline1211 for tSPNB2 and tSPPS2;
tex2html_wrap_inline1213 , tex2html_wrap_inline1215 for tSPCD2).
tex2html_wrap_inline1217 Calculation of the integral of tex2html_wrap_inline1219 (tSPNB2), or the integral of s(x,y) (tSPPS2).
tex2html_wrap_inline1223 Calculation of the function value tex2html_wrap_inline1225 (tSPNB2), or the function value s(x,y) (tSPPS2).
tex2html_wrap_inline1229 tex2html_wrap1389
Note that in the first two cases tex2html_wrap_inline1239 , respectively.
X,Y
(Type according to t) Independent variables x,y of polynomial spline s(x,y) or B-spline tex2html_wrap_inline1245 .
XI,YI
(Type according to t) One-dimensional arrays of length tex2html_wrap_inline1247 and tex2html_wrap_inline1249 , respectively. On entry, tex2html_wrap_inline1251 and tex2html_wrap_inline1253 must contain the lx-th data point tex2html_wrap_inline1257 and the ly-th data point tex2html_wrap_inline1261 for spline interpolation (tSPIN2) or spline approximation (tSPAP2). The data points must be in ascending order.
ZI
(Type according to t) Two-dimensional array of dimension tex2html_wrap_inline1263 . On entry, tex2html_wrap_inline1265 must contain the (lx,ly)-th data point tex2html_wrap_inline1269 for spline interpolation (tSPIN2) or spline approximation (tSPAP2).
NDIMZ
(INTEGER) Declared first dimension of a two-dimensional array ZI in the calling program ( tex2html_wrap_inline1271 ).
KNOT
(INTEGER) Controls the mode of supplying the knots for spline interpolation or approximation.
tex2html_wrap_inline1273 tex2html_wrap1391
tex2html_wrap_inline1283 The knots must be supplied by the user.
AX,BX;
(Type according to t) On entry, AX, BX; AY, BY must contain the left (right) end-points of the
AY,BY
intervals tex2html_wrap_inline1285 for the calculation of a set of spline knots in x-(y-)direction, respectively, by tSPKN2.
TX,TY
(Type according to t) One-dimensional arrays of length tex2html_wrap_inline1291 and tex2html_wrap_inline1293 , repectively.
For tSPKN2 and for tSPIN2, tSPAP2 if tex2html_wrap_inline1295 On exit, TX(J) and TY(J) contain the j-th knot in x-(y-)direction. In the other cases, on entry, TX(J) and TY(J) must contain the j-th knot in x-(y-)direction. The knots must be in non-decreasing order with multiplicity tex2html_wrap_inline1309 and tex2html_wrap_inline1311 , respectively.
C
(Type according to t) Two-dimensional array of dimension tex2html_wrap_inline1313 .
For tSPPS2, tSPCD2: On entry, C(I,J) must contain the (i,j)-th coefficient tex2html_wrap_inline1317 of the polynomial spline s(x,y) in B-spline representation.
For tSPIN2, tSPAP2, tSPVD2: On exit, C(I,J) contains the (i,j)-th coefficient tex2html_wrap_inline1323 of the polynomial interpolation or approximation spline s(x,y) in B-spline representation.
NDIMC
(INTEGER) Declared first dimension of a two-dimensional array C in the calling program
( tex2html_wrap_inline1327 ).
D
(Type according to t) Two-dimensional array of dimension tex2html_wrap_inline1329 .
On exit, D(I,J) contains the coefficient tex2html_wrap_inline1331 of the partial derivative of order tex2html_wrap_inline1333 with respect to x and y of a polynomial spline s(x,y) in B-spline representation.
W
(Type according to t) One-dimensional array of length tex2html_wrap_inline1341 (tSPPS2),
tex2html_wrap_inline1343 (tSPIN2), and of length tex2html_wrap_inline1345 (tSPAP2), used as working space.
NW
(INTEGER) Length of a one-dimensional array W, used as working space
( tex2html_wrap_inline1347 ).
IW
(INTEGER) One-dimensional array of length tex2html_wrap_inline1349 , used as working space.
NERR
(INTEGER) Error indicator. On exit:
tex2html_wrap_inline1351 No error or warning detected.
tex2html_wrap_inline1353 tex2html_wrap1393
tex2html_wrap_inline1359 tex2html_wrap1395

Examples:

Calculate

  1. The coefficients tex2html_wrap_inline1361 of a polynomial interpolation spline y=s(x) of degree k=2 in B-spline representation to a given data set tex2html_wrap_inline1367 ;
  2. The corresponding coefficients tex2html_wrap_inline1369 of the first derivative tex2html_wrap_inline1371 ;
  3. The values of tex2html_wrap_inline1373 and tex2html_wrap_inline1375 for x=0(0.1)1.
      IMPLICIT DOUBLE PRECISION (A-H,O-Z)
      DIMENSION XI(6),YI(6),T(9),C(6),D(6),W(42),IW(6)
      DATA K,N,NDER,KNOT / 2,6,1,1 /
      DATA XI / 0D0,0.20D0,0.40D0,0.60D0,0.80D0,1.00D0 /
      DATA YI / 1D0,0.66D0,0.47D0,0.38D0,0.35D0,0.34D0 /
      M=N+K+1
 
      CALL DSPIN1(K,N,XI,YI,KNOT,T,C,W,IW,NERR)
      CALL DSPCD1(K,M,NDER,T,C,D,NERR)
 
      WRITE(6,1000) K,N,(T(I),I=1,M)
      DO 20 J=0,10
      X=J/1D1
 
      SPL0=DSPPS1(K,M, 0,X,T,C,NERR)
      SPL1=DSPPS1(K,M, 1,X,T,D,NERR)
      SPLI=DSPPS1(K,M,-1,X,T,C,NERR)
 
   20 WRITE(6,1010) J,X,SPL0,SPL1,SPLI
 1000 FORMAT(...)
 1010 FORMAT(...)
      END
 DEGREE OF POLYNOMIAL SPLINE:  2          NUMBER OF DATA POINTS:  6
 KNOTS T :        0.00  0.00  0.00  0.25  0.50  0.75  1.00  1.00  1.00
 
     J        X         S(X)          DS(X)         IN(X)
     0      0.00      1.000000     -2.119921      0.000000
     1      0.10      0.809004     -1.700000      0.090100
     2      0.20      0.660000     -1.280079      0.163201
     3      0.30      0.550992     -0.940017      0.223467
     4      0.40      0.470000     -0.679816      0.274299
     5      0.50      0.415028     -0.419615      0.318334
     6      0.60      0.380000     -0.280953      0.357970
     7      0.70      0.358838     -0.142290      0.394796
     8      0.80      0.350000     -0.065306      0.430174
     9      0.90      0.344235     -0.050000      0.464873
    10      1.00      0.340000     -0.034694      0.499072

Error handling:

Error E210.1: K|KX,KY not in range, Error E210.5: NDER|NDERX,NDERY not in range,
Error E210.2: M|MX,MY not in range, Error E210.6: A,B|AX,BX;AY,BY inconsistent,
Error E210.3: I|I,J not in range, Error E210.7: NDERX|NDERY inconsistent.
Error E210.4: N|NX,NY not in range,

In all cases, NERR is set tex2html_wrap_inline1379 (see above). A message is written on Unit 6, unless subroutine MTLSET (N002) has been called.

References:

  1. J.H. Ahlberg, E.N. Nilson, J.L. Walsh, The Theory of Splines and their Applications, Academic Press, New York, 1967.
  2. M.J. Marsden, An identity for spline functions with applications to variation diminishing spline approximation, J. Appr. Theory 3 (1970), 7-49.
  3. C. de Boor, On calculating with B-splines, J. Appr. Theory 6 (1972), 50-62.
  4. M.G. Cox, The numerical evaluation of B-splines, J. Inst. Maths Applics 10 (1972), 134-149.
  5. J.G. Hayes, J. Halliday, The least-squares fitting of cubic spline surfaces to general data sets, J. Inst. Maths Applics 14 (1974), 89-103.
  6. M.G. Cox, An algorithm for spline interpolation, J. Inst. Maths Applics 15 (1975), 95-108.
  7. C. de Boor, A Practical Guide to Splines, Springer-Verlag, Berlin (1978).
  8. P. Lancester, K. Salkauskas, Curve and Surface Fitting - An Introduction, Academic Press, New York, 1986.
  9. J.C. Mason, M.S. Cox (Eds.), Algorithms for Approximation, Clarendon Press, Oxford, 1987.
  10. J.W. Schmidt, H. Späth (Eds.), Splines in Numerical Analysis, Akademie-Verlag, Berlin, 1989.
  11. H. Späth, Eindimensionale Spline-Interpolations-Algorithmen; Zweidimensionale Spline-Interpolations-Algorithmen, (2 Bd.) R. Oldenbourg, München 1990/1991.
tex2html_wrap_inline1381

Michel Goossens Wed Jun 5 02:17:20 METDST 1996