# Spline (mathematics)

Single knots at 1/3 and 2/3 establish a spline of three cubic polynomials meeting with C2 continuity. Triple knots at both ends of the interval ensure that the curve interpolates the end points. The shown curve is a parametric spline and not a polynomial function.

In mathematics, a spline is a function defined piecewise by polynomials. In interpolating problems, spline interpolation is often preferred to polynomial interpolation because it yields similar results, even when using low degree polynomials, while avoiding Runge's phenomenon for higher degrees.

In the computer science subfields of computer-aided design and computer graphics, the term spline more frequently refers to a piecewise polynomial parametric curve[citation needed]. Splines are popular curves in these subfields because of the simplicity of their construction, their ease and accuracy of evaluation, and their capacity to approximate complex shapes through curve fitting and interactive curve design.[citation needed]

The term spline comes from the flexible spline devices used by shipbuilders and draftsmen to draw smooth shapes.[1] A backronym of "Smooth Polynomial Lines Interpolating Numerical Estimates" has also been proposed[citation needed].

## Introduction

The term "spline" is used to refer to a wide class of functions that are used in applications requiring data interpolation and/or smoothing. The data may be either one-dimensional or multi-dimensional. Spline functions for interpolation are normally determined as the minimizers of suitable measures of roughness (for example integral squared curvature) subject to the interpolation constraints. Smoothing splines may be viewed as generalizations of interpolation splines where the functions are determined to minimize a weighted combination of the average squared approximation error over observed data and the roughness measure. For a number of meaningful definitions of the roughness measure, the spline functions are found to be finite dimensional in nature, which is the primary reason for their utility in computations and representation. For the rest of this section, we focus entirely on one-dimensional, polynomial splines and use the term "spline" in this restricted sense.

## Definition

### Simple splines

A simple spline is a piecewise polynomial function in a single variable. Such a spline S maps values from an interval [a,b] to the set of real numbers ${\displaystyle \mathbb {R} :}$

${\displaystyle S:[a,b]\to \mathbb {R} .}$

For the piecewise definition of S the interval [a,b] is partitioned in n subintervals that together make up the whole interval. This is done by selecting additional n - 1 numbers tk (1 ≤ kn - 1), representing points within this interval, such that

${\displaystyle a=t_{0}\leq t_{1}\leq \cdots \leq t_{n-1}\leq t_{n}=b,}$

yielding n subintervals

${\displaystyle [t_{i},t_{i+1}]\quad {\text{for}}\quad 0\leq i\leq n-1,}$

such that

${\displaystyle [a,b]=[t_{0},t_{1}]\cup [t_{1},t_{2}]\cup \cdots \cup [t_{n-2},t_{n-1}]\cup [t_{n-1},t_{n}].}$

For each of these subintervals a polynomial Pi will be constructed

${\displaystyle P_{i}:[t_{i},t_{i+1}]\to \mathbb {R} \quad {\text{for}}\quad 0\leq i\leq n-1.}$

Excluding the right endpoints of each subinterval (with exception of the rightmost) allows the piecewise definition of S on [a,b] by the n polynomials Pi on the ith subinterval

${\displaystyle S(t)={\begin{cases}P_{0}(t)\quad {\text{for}}\quad t\in [t_{0},t_{1})\\P_{1}(t)\quad {\text{for}}\quad t\in [t_{1},t_{2})\\\quad \vdots \\P_{n-2}(t)\quad {\text{for}}\quad t\in [t_{n-2},t_{n-1})\\P_{n-1}(t)\quad {\text{for}}\quad t\in [t_{n-1},t_{n}].\end{cases}}}$

If the n polynomials Pi each have degree at most m, then the spline is said to be of degree m (or is of order m+1).

The n+1 points tj (0 ≤ jn) are called knots. The vector ${\displaystyle {\mathbf {t} }=(t_{0},\dots ,t_{n})}$ is called a knot vector for the spline. If the knots are equidistantly distributed in the interval [a,b] the spline is called uniform, otherwise it is non-uniform.

Polynomial functions are continuous everywhere, they are said to belong to the class ${\displaystyle C^{0}.}$ Polynomials are also r times continuously differentiable, and so they belong also to the class ${\displaystyle C^{r}}$ (for arbitrary r). Since for a polynomial function of grade m all derivatives of order m + 1 and higher vanish to the zero function, one can sensibly state that m is the highest (non-trivial) degree of smoothness for this polynomial function.

At each point ${\displaystyle t_{k},}$ common to two intervals, the two polynomials ${\displaystyle P_{k-1}}$ and ${\displaystyle P_{k}}$ are glued together for defining S. If the values of the two polynomials agree there, then S is continuous at ${\displaystyle t_{k}.}$ If the two polynomials also have the same tangent there, that is, when also their first derivatives agree at ${\displaystyle t_{k},}$ then S is said to be in ${\displaystyle C^{1}}$ in a neighborhood of ${\displaystyle t_{k}.}$ If the first ${\displaystyle r_{k}}$ derivatives of the two polynomials agree at ${\displaystyle t_{k},}$ then S is said to be in ${\displaystyle C^{r_{k}}}$ in a neighborhood of ${\displaystyle t_{k}.}$ The values ${\displaystyle r_{k}}$ describe the smoothness of S at the gluing points ${\displaystyle t_{k}.}$ Assuming a spline of degree m, the loss of smoothness (with respect to the maximal nontrivial smoothness) at the point ${\displaystyle t_{k}}$ is given by ${\displaystyle m-r_{k}.}$ A loss of m at ${\displaystyle t_{k}}$, i.e. ${\displaystyle r_{k}=0,}$ establishes continuity there by imposing the condition ${\displaystyle P_{k-1}(t_{k})=P_{k}(t_{k});}$ a smaller loss, ${\displaystyle (1\leq r_{k}\leq m),}$ yields additional equations ${\displaystyle P_{k-1}^{(d)}(t_{k})=P_{k}^{(d)}(t_{k})}$ for ${\displaystyle 1\leq d\leq r_{k}}$ involving the derivatives up to the desired smoothness. Collecting the n - 1 values ${\displaystyle r_{k}}$ yields the smoothness vector ${\displaystyle {\mathbf {r} }=(r_{1},\dots ,r_{n-1})}$ of the spline S.

An inner knot tk can be "deleted" by making it equal to a neighboring knot tk ± 1. By identifying tk with tk + 1 the polynomial piece Pk disappears, and the pieces Pk−1 and Pk+1 join with the sum of the continuity losses for tk and tk+1.

That is,

${\displaystyle S\in C^{m-j_{k}-j_{k+1}}[t_{k}=t_{k+1}],}$ where ${\displaystyle j_{k}=m-r_{k}.}$

This leads to a more general understanding of a knot vector. The continuity loss at any point can be considered to be the result of multiple knots located at that point, and a spline type can be completely characterized by its degree m and its extended knot vector

${\displaystyle (t_{0},t_{1},\cdots ,t_{1},t_{2},\cdots ,t_{2},t_{3},\cdots ,t_{n-2},t_{n-1},\cdots ,t_{n-1},t_{n})}$

where tk is repeated jk times for ${\displaystyle k=1,\dots ,n-1}$. Obviously, n does not refer anymore to the number of components in this vector.

Given a knot vector ${\displaystyle {\mathbf {t} }}$, a degree m, and a smoothness vector ${\displaystyle {\mathbf {r} }}$ for this knot vector, one can consider the set of all splines of degree ${\displaystyle \leq m}$ having this knot vector ${\displaystyle {\mathbf {t} }}$ and this smoothness vector ${\displaystyle {\mathbf {r} }}$. Equipped with the operation of adding two piecewise defined polynomial functions (pointwise addition) and taking their real multiples, together with the zero function, this set becomes a real vector space. This spline space is commonly denoted by ${\displaystyle S_{m}^{\mathbf {r} }({\mathbf {t} })}$.

### Composing simple splines

A parametric curve in ${\displaystyle \mathbb {R} ^{n}}$ can be defined as a continuous map from an interval, the domain of the parameter, to the space ${\displaystyle \mathbb {R} ^{n}.}$ For example, a plane curve ${\displaystyle G}$ is a mapping from the interval [a,b] to the Euclidean plane ${\displaystyle \mathbb {R} ^{2}}$

{\displaystyle {\begin{aligned}G:\;[a,b]&\to \mathbb {R} ^{2}\\t&\mapsto (X(t),Y(t)),\end{aligned}}}

with ${\displaystyle X}$ and ${\displaystyle Y}$ being real functions on ${\displaystyle [a,b].}$

If both functions ${\displaystyle X}$ and ${\displaystyle Y}$ are simple spline functions of the same degree with the same extended knot vectors on that interval, then

${\displaystyle G(t)=(X(t),Y(t))\quad {\text{for}}\quad t\in [a,b]}$

specifies a spline curve in ${\displaystyle \mathbb {R} ^{2}.}$.

## Examples

Suppose the interval [a,b] is [0,3] and the subintervals are [0,1], [1,2], and [2,3]. Suppose the polynomial pieces are to be of degree 2, and the pieces on [0,1] and [1,2] must join in value and first derivative (at t=1) while the pieces on [1,2] and [2,3] join simply in value (at t = 2).

This would define a type of spline S(t) for which

${\displaystyle S(t)=P_{0}(t)=-1+4t-t^{2}{\mbox{ , }}0\leq t<1}$
${\displaystyle S(t)=P_{1}(t)=2t{\mbox{ , }}1\leq t<2}$
${\displaystyle S(t)=P_{2}(t)=2-t+t^{2}{\mbox{ , }}2\leq t\leq 3}$

would be a member of that type, and also

${\displaystyle S(t)=P_{0}(t)=-2-2t^{2}{\mbox{ , }}0\leq t<1}$
${\displaystyle S(t)=P_{1}(t)=1-6t+t^{2}{\mbox{ , }}1\leq t<2}$
${\displaystyle S(t)=P_{2}(t)=-1+t-2t^{2}{\mbox{ , }}2\leq t\leq 3}$

would be a member of that type.

(Note: while the polynomial piece 2t is not quadratic, the result is still called a quadratic spline. This demonstrates that the degree of a spline is the maximum degree of its polynomial parts.) The extended knot vector for this type of spline would be (0, 1, 2, 2, 3).

The simplest spline has degree 0. It is also called a step function. The next most simple spline has degree 1. It is also called a linear spline. A closed linear spline (i.e, the first knot and the last are the same) in the plane is just a polygon.

A common spline is the natural cubic spline of degree 3 with continuity C2. The word "natural" means that the second derivatives of the spline polynomials are set equal to zero at the endpoints of the interval of interpolation

${\displaystyle S''(a)\,=S''(b)=0.}$

### Algorithm for computing natural cubic splines

Cubic splines have polynomial pieces of the form ${\displaystyle P_{i}(t)=a_{i}+b_{i}(t-x_{i})+c_{i}(t-x_{i})^{2}+d_{i}(t-x_{i})^{3}.}$ Given ${\displaystyle n+1}$ coordinates ${\displaystyle (x_{0},y_{0}),(x_{1},y_{1}),\dots ,(x_{n},y_{n}),}$ we find ${\displaystyle n}$ polynomials, ${\displaystyle P_{0}}$ and ${\displaystyle P_{k},}$ which satisfy for ${\displaystyle 1\leq k\leq n-1}$:

${\displaystyle P_{0}(x_{0})=y_{0}\quad }$ and ${\displaystyle \quad P_{k-1}(x_{k})=y_{k}=P_{k}(x_{k}),}$
${\displaystyle P'_{k-1}(x_{k})=P'_{k}(x_{k}),}$
${\displaystyle P''_{k-1}(x_{k})=P''_{k}(x_{k}),}$
${\displaystyle P''_{0}(x_{0})=P''_{n-1}(x_{n})=0.}$

One such polynomial ${\displaystyle P}$ is given by a 4-tuple ${\displaystyle (a,b,c,d)}$ where ${\displaystyle a,b,c\,}$ and ${\displaystyle d\,}$ correspond to the coefficients as used above.

Computation of Natural Cubic Splines:
Input: a set of ${\displaystyle k+1}$ coordinates
Output: a spline as a set of polynomial pieces, each represented by a 5-tuple.

1. Create a new array a of size n + 1, and for ${\displaystyle j=0,\ldots ,n}$ set ${\displaystyle a_{j}=y_{j}}$
2. Create new arrays b, d and μ each of size n
3. Create a new array h of size k and for ${\displaystyle i=0,\ldots ,n-1}$ set ${\displaystyle h_{i}=x_{i+1}-x_{i}}$
4. Create a new array β of size n-1 and for ${\displaystyle k=1,\ldots ,n-1}$ set ${\displaystyle \beta _{k}={\tfrac {3}{h_{k}}}(a_{k+1}-a_{k})-{\tfrac {3}{h_{k-1}}}(a_{k}-a_{k-1})}$
5. Create new arrays c, l, and z each of size ${\displaystyle n+1}$.
6. Set ${\displaystyle l_{0}=1,\;\mu _{0}=z_{0}=0}$
7. For ${\displaystyle i=1,\ldots ,n-1\,}$
1. Set ${\displaystyle l_{i}=2(x_{i+1}-x_{i-1})-h_{i-1}\mu _{i-1}.}$
2. Set ${\displaystyle \mu _{i}={\tfrac {h_{i}}{l_{i}}}.}$
3. Set ${\displaystyle z_{i}={\tfrac {\beta _{i}-h_{i-1}z_{i-1}}{l_{i}}}.}$
8. Set ${\displaystyle l_{n}=1;z_{n}=c_{n}=0.}$
9. For ${\displaystyle i=n-1,n-2,\ldots ,0}$
1. Set ${\displaystyle c_{i}=z_{i}-\mu _{i}c_{i+1}}$
2. Set ${\displaystyle b_{i}={\tfrac {a_{i+1}-a_{i}}{h_{i}}}-{\tfrac {h_{i}(c_{i+1}+2c_{i})}{3}}}$
3. Set ${\displaystyle d_{i}={\tfrac {c_{i+1}-c_{i}}{3h_{i}}}.}$
10. Create the spline as a new set of polynomials and call it output_set. Populate it with n 4-tuples for the polynomials Pi.
11. For ${\displaystyle i=0,\ldots ,k-1}$
1. Set Pi,a = ai
2. Set Pi,b = bi
3. Set Pi,c = ci
4. Set Pi,d = di
12. Output output_set

## Continuity levels

If sampled data from a function or a physical object are available, spline interpolation is an approach to creating a spline that approximates those data.

### Natural continuity

The classical spline type of degree n used in numerical analysis has continuity

${\displaystyle S(t)\in \mathrm {C} ^{n-1}[a,b],\,}$

which means that every two adjacent polynomial pieces meet in their value and first n - 1 derivatives at each knot. The mathematical spline that most closely models the flat spline is a cubic (n = 3), twice continuously differentiable (C2), natural spline, which is a spline of this classical type with additional conditions imposed at endpoints a and b.

### Reduced continuity

Another type of spline that is much used in graphics, for example in drawing programs such as Adobe Illustrator from Adobe Systems, has pieces that are cubic but has continuity only at most

${\displaystyle S(t)\in \mathrm {C} ^{1}[a,b].}$

This spline type is also used in PostScript as well as in the definition of some computer typographic fonts.

Many computer-aided design systems that are designed for high-end graphics and animation use extended knot vectors, for example Maya from Alias. Computer-aided design systems often use an extended concept of a spline known as a non-uniform rational B-spline (NURBS).

### Locally negative continuity

It might be asked what meaning more than n multiple knots in a knot vector have, since this would lead to continuities like

${\displaystyle S(t)\in C^{-m}{\mbox{ , }}m>0}$

at the location of this high multiplicity. By convention, any such situation indicates a simple discontinuity between the two adjacent polynomial pieces. This means that if a knot ti appears more than n + 1 times in an extended knot vector, all instances of it in excess of the (n + 1)th can be removed without changing the character of the spline, since all multiplicities n + 1, n + 2, n + 3, etc. have the same meaning. It is commonly assumed that any knot vector defining any type of spline has been culled in this fashion.

## General expression for a C2 interpolating cubic spline

The general expression for the ith C2 interpolating cubic spline at a point x with the natural condition can be found using the formula

${\displaystyle S_{i}(x)={\frac {z_{i}(x-t_{i-1})^{3}}{6h_{i}}}+{\frac {z_{i-1}(t_{i}-x)^{3}}{6h_{i}}}+\left[{\frac {f(t_{i})}{h_{i}}}-{\frac {z_{i}h_{i}}{6}}\right](x-t_{i-1})+\left[{\frac {f(t_{i-1})}{h_{i}}}-{\frac {z_{i-1}h_{i}}{6}}\right](t_{i}-x)}$

where

• ${\displaystyle z_{i}=f^{\prime \prime }(t_{i})}$ are the values of the second derivative at the ith knot.
• ${\displaystyle h_{i}^{}=t_{i}-t_{i-1}}$
• ${\displaystyle f(t_{i}^{})}$ are the values of the function at the ith knot.

## Representations and names

For a given interval [a,b] and a given extended knot vector on that interval, the splines of degree n form a vector space. Briefly this means that adding any two splines of a given type produces spline of that given type, and multiplying a spline of a given type by any constant produces a spline of that given type. The dimension of the space containing all splines of a certain type can be counted from the extended knot vector:

${\displaystyle a=t_{0}<\underbrace {t_{1}=\cdots =t_{1}} _{j_{1}}<\cdots <\underbrace {t_{k-2}=\cdots =t_{k-2}} _{j_{k-2}}
${\displaystyle j_{i}\leq n+1~,~~i=1,\ldots ,k-2.}$

The dimension is equal to the sum of the degree plus the multiplicities

${\displaystyle d=n+\sum _{i=1}^{k-2}j_{i}.}$

If a type of spline has additional linear conditions imposed upon it, then the resulting spline will lie in a subspace. The space of all natural cubic splines, for instance, is a subspace of the space of all cubic C2 splines.

The literature of splines is replete with names for special types of splines. These names have been associated with:

• The choices made for representing the spline, for example:
• The choices made in forming the extended knot vector, for example:
• using single knots for Cn-1 continuity and spacing these knots evenly on [a,b] (giving us uniform splines)
• using knots with no restriction on spacing (giving us nonuniform splines)
• Any special conditions imposed on the spline, for example:
• enforcing zero second derivatives at a and b (giving us natural splines)
• requiring that given data values be on the spline (giving us interpolating splines)

Often a special name was chosen for a type of spline satisfying two or more of the main items above. For example, the Hermite spline is a spline that is expressed using Hermite polynomials to represent each of the individual polynomial pieces. These are most often used with n = 3; that is, as cubic Hermite splines. In this degree they may additionally be chosen to be only tangent-continuous (C1); which implies that all interior knots are double. Several methods have been invented to fit such splines to given data points; that is, to make them into interpolating splines, and to do so by estimating plausible tangent values where each two polynomial pieces meet (giving us cardinal splines, Catmull–Rom splines, and Kochanek–Bartels splines, depending on the method used).

For each of the representations, some means of evaluation must be found so that values of the spline can be produced on demand. For those representations that express each individual polynomial piece Pi(t) in terms of some basis for the degree n polynomials, this is conceptually straightforward:

• For a given value of the argument t, find the interval in which it lies ${\displaystyle t\in [t_{i},t_{i+1}]}$
• Look up the polynomial basis chosen for that interval ${\displaystyle P_{0},\ldots ,P_{k-2}}$
• Find the value of each basis polynomial at t: ${\displaystyle P_{0}(t),\ldots ,P_{k-2}(t)}$
• Look up the coefficients of the linear combination of those basis polynomials that give the spline on that interval c0, ..., ck-2
• Add up that linear combination of basis polynomial values to get the value of the spline at t:
${\displaystyle \sum _{j=0}^{k-2}c_{j}P_{j}(t).}$

However, the evaluation and summation steps are often combined in clever ways. For example, Bernstein polynomials are a basis for polynomials that can be evaluated in linear combinations efficiently using special recurrence relations. This is the essence of De Casteljau's algorithm, which features in Bézier curves and Bézier splines.

For a representation that defines a spline as a linear combination of basis splines, however, something more sophisticated is needed. The de Boor algorithm is an efficient method for evaluating B-splines.

## History

Before computers were used, numerical calculations were done by hand. Although piecewise-defined functions like the sign function or step function were used, polynomials were generally preferred because they were easier to work with. Through the advent of computers splines have gained importance. They were first used as a replacement for polynomials in interpolation, then as a tool to construct smooth and flexible shapes in computer graphics.

A wooden spline

It is commonly accepted that the first mathematical reference to splines is the 1946 paper by Schoenberg, which is probably the first place that the word "spline" is used in connection with smooth, piecewise polynomial approximation. However, the ideas have their roots in the aircraft and shipbuilding industries. In the foreword to (Bartels et al., 1987), Robin Forrest describes "lofting", a technique used in the British aircraft industry during World War II to construct templates for airplanes by passing thin wooden strips (called "splines") through points laid out on the floor of a large design loft, a technique borrowed from ship-hull design. For years the practice of ship design had employed models to design in the small. The successful design was then plotted on graph paper and the key points of the plot were re-plotted on larger graph paper to full size. The thin wooden strips provided an interpolation of the key points into smooth curves. The strips would be held in place at discrete points (called "ducks" by Forrest; Schoenberg used "dogs" or "rats") and between these points would assume shapes of minimum strain energy. According to Forrest, one possible impetus for a mathematical model for this process was the potential loss of the critical design components for an entire aircraft should the loft be hit by an enemy bomb. This gave rise to "conic lofting", which used conic sections to model the position of the curve between the ducks. Conic lofting was replaced by what we would call splines in the early 1960s based on work by J. C. Ferguson at Boeing and (somewhat later) by M. A. Sabin at British Aircraft Corporation.

The word "spline" was originally an East Anglian dialect word.[citation needed]

The use of splines for modeling automobile bodies seems to have several independent beginnings. Credit is claimed on behalf of de Casteljau at Citroën, Pierre Bézier at Renault, and Birkhoff, Garabedian, and de Boor at General Motors (see Birkhoff and de Boor, 1965), all for work occurring in the very early 1960s or late 1950s. At least one of de Casteljau's papers was published, but not widely, in 1959. De Boor's work at General Motors resulted in a number of papers being published in the early 1960s, including some of the fundamental work on B-splines.

Work was also being done at Pratt & Whitney Aircraft, where two of the authors of (Ahlberg et al., 1967)—the first book-length treatment of splines—were employed, and the David Taylor Model Basin, by Feodor Theilheimer. The work at General Motors is detailed nicely in (Birkhoff, 1990) and (Young, 1997). Davis (1997) summarizes some of this material.

## References

• Schoenberg, Isaac J. (1946). "Contributions to the Problem of Approximation of Equidistant Data by Analytic Functions: Part A.—On the Problem of Smoothing or Graduation. A First Class of Analytic Approximation Formulae" (PDF). Quarterly of Applied Mathematics. 4 (2): 45–99.
• Schoenberg, Isaac J. (1946). "Contributions to the Problem of Approximation of Equidistant Data by Analytic Functions: Part B.—On the Problem of Osculatory Interpolation. A Second Class of Analytic Approximation Formulae" (PDF). Quarterly of Applied Mathematics. 4 (2): 112–141.
• Ferguson, James C. (1964). "Multivariable Curve Interpolation". Journal of the ACM. 11 (2): 221–228. doi:10.1145/321217.321225.
• Ahlberg, J. Harold; Nielson, Edwin N.; Walsh, Joseph L. (1967). The Theory of Splines and Their Applications. New York: Academic Press. ISBN 0-12-044750-9.
• Birkhoff (1990). "Fluid dynamics, reactor computations, and surface representation". In Nash, Steve. A History of Scientific Computation. Reading: Addison-Wesley. ISBN 0-201-50814-1.
• Bartels, Richard H.; Beatty, Brian A.; Barsky, John C. (1987). An Introduction to Splines for Use in Computer Graphics and Geometric Modeling. San Mateo: Morgan Kaufmann. ISBN 0-934613-27-3.
• Birkhoff; de Boor (1965). "Piecewise polynomial interpolation and approximation". In Garabedian, H. L. Proc. General Motors Symposium of 1964. New York and Amsterdam: Elsevier. pp. 164–190.
• Davis (1997). "B-splines and Geometric design". SIAM News. 29 (5).
• Epperson (1998). "History of Splines". NA Digest. 98 (26).
• Stoer; Bulirsch. Introduction to Numerical Analysis. New York: Springer-Verlag. pp. 93–106. ISBN 0-387-90420-4.
• Schoenberg (1946). "Contributions to the problem of approximation of equidistant data by analytic functions". Quart. Appl. Math. 4: 45–99 and 112–141.
• Young (1997). "Garrett Birkhoff and applied mathematics". Notices of the AMS. 44 (11): 1446–1449.
• Chapra; Canale (2006). Numerical Methods for Engineers (5th ed.). Boston: McGraw-Hill. ISBN 0-07-291873-X.
Specific
1. ^ Wegman, Edward J., and Ian W. Wright (1983). "Splines in statistics". Journal of the American Statistical Association. 78 (382): 351–365. JSTOR 2288640.CS1 maint: Multiple names: authors list (link)