Is there a name for this piecewise cubic interpolation kernel

354 Views Asked by At

I went looking for a way to do piecewise cubic interpolation, like natural cubic splines, but:

  • expressible as a convolution of data points with a piecewise cubic kernel; and
  • still C2-continuous
  • still passes through all the data points
  • still cubic between integer abscissas
  • kernel converges to $0$ at $\pm\infty$

I did the math and figured out there's only one solution -- the kernel is a piecewise cubic function, characterized as follows:

\begin{split} y(0) &= 1\\ y(x) &= 0,\text{ for all integer }x \neq 0\\ y'(x) &= sgn(x) * 3(\sqrt3-2)^{|x|},\text{ for all integer }x\\ \end{split} which implies

$$y''(x) = -6\sqrt 3(\sqrt3-2)^{|x|},\text{ for all integer }x \neq 0$$

This turns out to make a pretty nice interpolation, without a lot of ringing or arbitrary boundary conditions, so... what's it actually called?

EDIT: It's been a while, and still no takers. In the interim, I made a demo. See: http://nbviewer.jupyter.org/github/mtimmerm/IPythonNotebooks/blob/master/NaturalCubicSplines.ipynb

1

There are 1 best solutions below

6
On BEST ANSWER

A couple of comments (that are too long for a comment).

Firstly, your splines have uniform knot spacing. So, the matrix in the usual system of linear equations is fixed, and you can invert it symbolically, once and for all. Having done this, you have a simple formula that gives you the interpolating spline as a function of the data points.

I don't know anything about convolution kernels, but the functions you're using look a lot like so-called "cardinal" splines. Again, using uniform knots located at the integers, the $i$-th cardinal spline $s_i$ satisfies $s_i(i) = 1$ and $s_i(j)=0$ for $j \ne i$. Then, the spline $s$ defined by $$ s(x) = \sum a_i s_i(x) $$ interpolates the $a_i$ values. Specifically $s(i)=a_i$ for all $i$.