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

Next Post Previous Post