A cubic spline is a spline constructed of piecewise third-order polynomials which pass through a set of n control points. According to [1], a cubic spline \(S(x)\) can be defined as: \(S(x)\) is a cubic polynomial \(S_j(x)\) on [\(x_j,x_{j+1}\)], for all \(j = 0,1,...,n-1\).
\(S_j(x) = a_j + b_j(x-x_j) + c_j(x-x_j)^2 + d_j(x-x_j)^3\)
and \(h_j = x_{j+1} - x_j\), for all \(j =0,1,...,n-1\)
Solve for coefficients \(a_j,b_j,c_j,d_j\) by:
- \(S_j(x_{j}) = a_j\)
- \(S_{j+1}(x_{j+1}) = a_{j+1} = a_j + b_j h_j + c_j(h_j)^2 + d_j (h_j)^3\)
- \(S^{'}_{j}(x_j) = b_j\), also \(b_{j+1} = b_j + 2c_j h_j + 3d_j (h_j)^2\)
- \(S^{''}_{j}(x_j) = 2c_j\), also \(c_{j+1} = c_j + 3d_j h_j\)
- Natural or clamped boundary conditions
Therefore, the coefficient \(a_j,b_j,c_j,d_j\) are:
- \(a_j = S_j(x_{j})\)
- \(b_j = \frac{a_{j+1}-a_j}{h_j} - \frac{h_j(2c_j+c_{j+1})}{3}\)
- \(c_j\) can be solved in \(Ac = B\) format where \(A\in \mathbf{R}^{n\times n}, B \in \mathbf{R}^{n\times 1}\), since: \(h_{j-1}c_{j-1} + 2(h_{j-1}+h_j)c_j + h_j c_{j+1} = \frac{3}{h_j}(a_{j+1}-a_j) - \frac{3}{h_{j-1}}(a_j - a_{j-1})\) for all \(j =1,2,...,n-1\)
- \(d_j = \frac{c_{j+1}-c_j}{3h_j}\)
[1] Richard H Bartels, John C Beatty, and Brian A Barsky, An introduction to spline for use in computer graphics and geometric modeling, Morgan Kaufmann, 1995