Spline (mathematics)

From Infogalactic: the planetary knowledge core
(Redirected from Cubic splines)
Jump to: navigation, search
A quadratic spline composed of six polynomial segments. Between point 0 and point 1 a straight line. Between point 1 and point 2 a parabola with second derivative = 4. Between point 2 and point 3 a parabola with second derivative = −2. Between point 3 and point 4 a straight line. Between point 4 and point 5 a parabola with second derivative = 6. Between point 5 and point 6 a straight line.
A cubic spline composed of seven polynomial segments. This shape is used as a pulse in the article Pulse (physics)
The second derivative of the cubic spline above.

In mathematics, a spline is a numeric function that is piecewise-defined by polynomial functions, and which possesses a high degree of smoothness at the places where the polynomial pieces connect (which are known as nodes).[1][2]

In interpolating problems, spline interpolation is often preferred to polynomial interpolation because it yields similar results to interpolating with higher degree polynomials while avoiding instability due to Runge's phenomenon. In computer graphics, parametric curves whose coordinates are given by splines are popular 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.

The most commonly used splines are cubic splines, i.e., of order 4—in particular, cubic B-spline, which is equivalent to C2 continuous composite Bézier curves.[3] They are common, in particular, in spline interpolation simulating the function of flat splines.

The term spline is adopted from the name of a flexible strip of metal commonly used by drafters to assist in drawing curved lines.[4]

Examples

The bell-shaped Irwin-Hall spline
The second derivative of the spline above

A simple example of a quadratic spline (a spline of degree 2) is


S(t) = \begin{cases}
(t+1)^2-1   & -2 \le t < 0\\
1-(t-1)^2   & 0 \le t \le 2
\end{cases}

for which S'(0)=2.

A simple example of a cubic spline is

S(t) = \left|t\right|^3

as


S(t) = \begin{cases}
t^3   & t \ge 0\\
-t^3   & t < 0
\end{cases}

and

S'(0) =\ 0
S''(0) =\ 0

An example of using a cubic spline to create a bell shaped curve is the Irwin-Hall distribution polynomials:


f_X(x)= \begin{cases}
\frac{1}{4}(x+2)^3    & -2\le x \le -1\\
\frac{1}{4}\left(3|x|^3 - 6x^2 +4 \right)& -1\le x \le 1\\
\frac{1}{4}(2-x)^3      & 1\le x \le 2
\end{cases}

History

Before computers were used, numerical calculations were done by hand. Functions such as the step function were used but polynomials were generally preferred. With the advent of computers, splines first replaced polynomials in interpolation, and then served in construction of smooth and flexible shapes in computer graphics.[5]

The word "spline" originally meant a thin wood or metal slat in East Anglian dialect. By 1895 it had come to mean a flexible ruler used to draw curves.[6] These splines were used in the aircraft and shipbuilding industries. For years ship designers had employed models to design hulls in small scale. 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 the key points (using lead weights called "ducks"[7] (see Spline Ducks for illustration) or "dogs" or "rats"[8]) and between these points would assume shapes of minimum strain energy. In the foreword to Bartels et al. (1987),[7] 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.

It is commonly accepted that the first mathematical reference to splines is the 1946 paper by Schoenberg,[8] which is probably the first place that the word "spline" is used in connection with smooth, piecewise polynomial approximation. 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[9] at Boeing and (somewhat later) by M. A. Sabin at British Aircraft Corporation.

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,[10] Garabedian, and de Boor at General Motors (see Birkhoff and de Boor, 1965),[11] 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.[12]

Work was also being done at Pratt & Whitney Aircraft, where two of the authors of the first book-length treatment of splines (Ahlberg et al., 1967)[13] 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).[14] Davis (1997) summarizes some of this material.

Whittaker [15] derived a spline for smoothing data. He seems to be the first to propose balancing a measure of fit with a penalty term based on the sums-of-squares of the third differences of the function. He treats the penalty term as a prior distribution and estimates the spline through Bayes theorem.

Definition

A spline is a piecewise-polynomial real function

S\colon [a,b]\to \R

on an interval [a,b] composed of k subintervals [t_{i-1}, t_i] with

a = t_0 < t_1 < \dotsb < t_{k-1} < t_k = b.

The restriction of S to an interval i is a polynomial

P_i\colon [t_{i-1}, t_i] \to \R,

so that

S(t) = P_1 (t) \mbox{ , } t_0 \le t < t_1,
S(t) = P_2 (t) \mbox{ , } t_1 \le t < t_2,
\vdots
S(t) = P_k (t) \mbox{ , } t_{k-1} \le t \le t_{k}.

The highest order of the polynomials  P_i (t) is said to be the order of the spline S. The spline is said to be uniform if all subintervals are of the same length, and non-uniform otherwise.[16]

The idea is to choose the polynomials in a way that guarantees sufficient smoothness of S. Specifically, for a spline of order n, S is required to be both continuous and continuously differentiable to order n-1 at the interior points t_i: for i=1, \dotsc, k-1 and j=0, \dotsc, n-1

P_i^{(j)} (t_i) = P_{i+1}^{(j)} (t_i).

Derivation of a cubic spline interpolating between points

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Spline interpolation is one of the most common uses of splines.

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. An Introduction to Splines for Use in Computer Graphics and Geometric Modeling, p. 215, at Google Books
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found. (Subscription or UK public library membership required.)
  7. 7.0 7.1 Lua error in package.lua at line 80: module 'strict' not found.
  8. 8.0 8.1 Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.

Further reading

  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.

External links

Theory

Excel functions

Online utilities

Computer code