Splines - ProkopHapala/FireCore GitHub Wiki
Hermite Spline
-
Hermite spline of any degree can be easily evaluated by just solving the matrix where right-hand-side are expected boundrary conditions (i.e. values $f(x=0),f'(x=0),f''(x), f(x=1),f'(x=1),f''(1)$ and the rows of matrix are n-th derivatives of the polynominal basis ${x^k}$ Colab Nontebook: Hermite Basis of eny degree
-
Hermite spline can be more useful that B-spline as it is more local (the intervals does not overalap). This however means that the coefficient are not shared among neighbor intervals (which make B-spline potentially more efficient).
-
But on multi-dimensional grids it may be better to work with Hermite basis, as it does not require reading from scattered memory adresses. For example Cubic Hermite spline has two basis function at each node points in each direction, that is $2^3=8$ basis functions in 3D. Therefore we can make tri-cubic Hermite interpolation using similar algorithm as for tri-linear interpolation (i.e. reading from 8 memory adresses rather than 64) and reading 8 values at a time. Altogether it is still 8x8=64 numbers, but in case of Hermite spline it is more localized.
-
Hermite basis function can be viewed as symmetric/anti-symmetric on interval $[-1,1]$, however we cannot just extend polynominal defined on $[0,1]$, we need to use $H(|x|)$ resp. $-H(|x|)$ for $x<0$.
-
Coefficient of Hermite spline are normally found by calculating derivatives at node points, but they may be also found by fitting values of function on the whole interval $[-1,1]$ which typically gives better approximation, especially when fitted function is not smooth (e.g. corrupted by numerical noise).