Can someone explain to me what a cubic spline is, and how we could use it to interpolate a function?
I have searched on the internet but I would like a simple explanation.
Best Answer
If you have a function $f(x)$ on some interval $[a,b]$, which is divided on $[x_{i-1}, x_i]$ such as $a=x_0< x_1< … <x_N=b$ then you can interpolate this function by a cubic spline $S(x)$. $S(x)$ is a piecewise function: on each $h_i = x_i – x_{i-1}$ it's a cubic polynomial, which can be written for simplicity as $S_i(x) = a_i + b_i(x – x_i) + {c_iover2}(x-x_i)^2 + {d_iover6}(x – x_i)^3 ,!$. It has to satisfy the next constraints:
1) passing through the knots : $S_ileft(x_{i}right) = f(x_{i})$
2) be continuous up to the 2nd derivative:
$S_ileft(x_{i-1}right) = S_{i-1}(x_{i-1}) \ S'_ileft(x_{i-1}right) = S'_{i-1}(x_{i-1}) \ S''_ileft(x_{i-1}right) = S''_{i-1}(x_{i-1})$
3) for natural splines:
$S''(a) = S''(b) = 0.$
These equations will uniquely define spline coefficients.
A good way to understand this is to take e.g. 3 points and manually solve systems for coefficients of $S_1(x)$ and $S_2(x)$
Finally you should get the next system:
$a_i = fleft(x_{i}right) ,!$
$h_ic_{i-1} + 2(h_i + h_{i+1})c_i + h_{i+1}c_{i+1} = 6left({{f_{i+1} – f_i}over{h_{i+1}}} – {{f_{i} – f_{i-1}}over{h_{i}}}right) ,!$
$d_i = {{c_i – c_{i-1}}over{h_i}} ,!$
$b_i = {1over2}h_ic_i – {1over6}h_i^2d_i + {{f_i – f_{i-1}}over{h_i}}= {{f_i – f_{i-1}}over{h_i}} + {{h_i(2c_i + c_{i-1})}over6} ,!$