From Wikipedia, the free encyclopedia
 
 
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
 
 
In 
mathematics, a 
spline is a 
special 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]
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
The simplest spline is a 
piecewise polynomial function, with each polynomial having a single variable. The spline 
S takes values from an interval [
a,
b] and maps them to 

, the set of 
real numbers,
![{\displaystyle S:[a,b]\to \mathbb {R} .}](https://wikimedia.org/api/rest_v1/media/math/render/svg/408c93e305ecf563c2764bedf9f7365d206c3bf0) 
Since 
S is piecewise defined, choose 
k subintervals to partition [
a,
b]:
![{\displaystyle [t_{i},t_{i+1}]{\mbox{ , }}i=0,\ldots ,k-1}](https://wikimedia.org/api/rest_v1/media/math/render/svg/89611da37419c8db1b71af0f552e396806d313ff) 
![{\displaystyle [a,b]=[t_{0},t_{1}]\cup [t_{1},t_{2}]\cup \cdots \cup [t_{k-2},t_{k-1}]\cup [t_{k-1},t_{k}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4cd1283f5ea6bce55811b7fa4dcbd746d1b5c4cb) 
 
Each of these subintervals is associated with a polynomial 
Pi,
![{\displaystyle P_{i}:[t_{i},t_{i+1}]\to \mathbb {R} }](https://wikimedia.org/api/rest_v1/media/math/render/svg/92d44126644a70c203afc9638659ab15ef87f460) . .
On the 
ith subinterval of [
a,
b], 
S is defined by 
Pi,
 
 
 
 
The given 
k+1 points 
tj (0 ≤ 
j ≤ 
k) are called 
knots. The vector 

 is called a 
knot vector for the spline. If the knots are equidistantly distributed in the interval [
a,
b] we say the spline is 
uniform, otherwise we say it is 
non-uniform.
If the 
k polynomial pieces 
Pi each have degree at most 
n, then the spline is said to be of 
degree ≤ 
n (or of 
order ≤ 
n+
1).
If for 

 in a neighborhood of the 
k-1 points 
ti, then the spline is said to be of 
smoothness (at least) 

 at 
ti. That is, at 
ti the two pieces 
Pi−1 and 
Pi share common derivative values from the derivative of order 0 (the function value) up through the derivative of order 
ri (in other words, the two adjacent polynomial pieces connect with 
loss of smoothness of at most 
n - 
ri).
A vector 

 such that the spline has smoothness 

 at 
ti for 

 is called a 
smoothness vector for the spline.
Given a knot vector 

, a degree 
n, and a smoothness vector 

 for 

, one can consider the set of all splines of degree 

 having knot vector 

 and smoothness vector 

.
 Equipped with the operation of adding two functions (pointwise 
addition) and taking real multiples of functions, this set becomes a 
real 
vector space. This 
spline space is commonly denoted by 

.
A knot 
ti can be "deleted" by moving it to equal another knot 
ti+1. The polynomial piece 
Pi(
t) disappears, and the pieces 
Pi−1(
t) and 
Pi+1(
t) join with the sum of the continuity losses for 
ti and 
ti+1. That is,
![{\displaystyle S(t)\in C^{n-j_{i}-j_{i+1}}[t_{i}=t_{i+1}],}](https://wikimedia.org/api/rest_v1/media/math/render/svg/20e7a657b5503345d97d0fa55c67ebfc00048e87) where where 
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 
n and its 
extended knot vector
 
where 
ti is repeated 
ji times for 

.
A 
parametric curve on the interval [
a,
b]
![{\displaystyle G(t)=(X(t),Y(t)){\mbox{ , }}t\in [a,b]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/693bd2eae6b680808285a8ce4c1a23e0ed6d04ef) 
is a 
spline curve if both 
X and 
Y are spline functions of the same degree with the same extended knot vectors on that interval.
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
 
 
 
would be a member of that type, and also
 
 
 
would be a member of that type. (Note: while the polynomial piece 2
t
 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
 
Algorithm for computing natural cubic splines
Cubic splines have polynomial pieces of the form
 Given
 Given 
 coordinates 

 we find 

 polynomials 

 which satisfy 
for  :
:
 and and 
 
 
 
One such polynomial 

 is given by a 5-tuple 

 where 

 and 

 correspond to the coefficients as used above and 

 denotes the variable over the appropriate domain 
![[x_i,x_{i+1}]](https://wikimedia.org/api/rest_v1/media/math/render/svg/7138606cdb8eb7dddaba59b5aefe1ade6bc05a1b)
.
Computation of Natural Cubic Splines:
Input: a set of 

 coordinates
Output: a spline as a set of polynomial pieces, each represented by a 5-tuple.
- Create a new array a of size k + 1, and for  set set 
- Create new arrays b, d and μ each of size k
- Create a new array h of size k and for  set set 
- Create a new array α of size k-1 and for  set set 
- Create new arrays c, l, and z each of size  . .
- Set  
- For   
- Set  
- Set  
- Set  
 
- Set  
- For   
- Set  
- Set  
- Set  
 
- Create the spline as a new set of polynomials and call it output_set. Populate it with k 5-tuples for the polynomials P.
- For   
- Set Pi,a = ai
- Set Pi,b = bi
- Set Pi,c = ci
- Set Pi,d = di
- Set Pi,x = xi
 
- 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],\,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1de1fdb04985a749e7e84f051b5ae15a4837b535) 
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].}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b56b1ccf157f59e2b3245206a79a8ef784dfd6e1) 
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 
Nonuniform 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
 
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
+\left[{\frac {f(t_{i-1})}{h_{i}}}-{\frac {z_{i-1}h_{i}}{6}}\right](t_{i}-x)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d98ff1b6da49994056e5bd034bad792c8f2dc7b5) 
where
 are the values of the second derivative at the ith knot. are the values of the second derivative at the ith knot.
 
 are the values of the function at the ith knot. 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:
 
 
The dimension is equal to the sum of the degree plus the multiplicities
 
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}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c74ba28db7893372d54339c022fa854065c38302) 
- Look up the polynomial basis chosen for that interval  
- Find the value of each basis polynomial at 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:
 
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.
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.