A cubic spline is a spline constructed of piecewise third-order polynomials which pass through a set of control points. The second derivative of each polynomial is commonly set to zero at the endpoints, since this provides a boundary condition that completes the system of equations. This produces a so-called "natural" cubic spline and leads to a simple tridiagonal system which can be solved easily to give the coefficients of the polynomials. However, this choice is not the only one possible, and other boundary conditions can be used instead.
Cubic splines are implemented in the Wolfram Language as BSplineCurve[pts, SplineDegree -> 3].
Consider 1-dimensional spline for a set of points . Following Bartels et al. (1998, pp. 10-13), let the th piece of the spline be represented by
(1)
|
where is a parameter and , ..., . Then
(2)
| |||
(3)
|
Taking the derivative of in each interval then gives
(4)
| |||
(5)
|
Solving (2)-(5) for , , , and then gives
(6)
| |||
(7)
| |||
(8)
| |||
(9)
|
Now require that the second derivatives also match at the points, so
(10)
| |||
(11)
| |||
(12)
| |||
(13)
|
for interior points, as well as that the endpoints satisfy
(14)
| |||
(15)
|
This gives a total of equations for the unknowns. To obtain two more conditions, require that the second derivatives at the endpoints be zero, so
(16)
| |||
(17)
|
Rearranging all these equations (Bartels et al. 1998, pp. 12-13) leads to the following beautifully symmetric tridiagonal system
(18)
|
If the curve is instead closed, the system becomes
(19)
|