Cubic Splines¶
Cubic splines are splines whose degree is equal to 3.
Cubic splines are described by the following polynomial
\[P_i\left( x \right) = c_{1,i}+ c_{2,i}\left( x - x_i \right) + c_{3,i}{\left( x - x_i \right)}^2+ c_{4,i}{\left( x - x_i \right)}^3,\]
where
\[x \in \left[ x_i, x_{i+1} \right),\]
\[i = 1,\cdots , n-1.\]
There are a lot of different types of cubic splines: Hermite, natural, Akima, Bessel. However, the current version of DPC++ API supports only one type: Hermite.
Header File¶
#include<oneapi/mkl/experimental/data_fitting.hpp>
Hermite Spline¶
Coefficients of Hermite spline are calculated using the following formulas:
\[c_{1,i} = f\left( x_i \right),\]
\[c_{2,i} = s_i,\]
\[c_{3,i} = \left( \left[ x_i, x_{i+1} \right]f - s_i \right) / \left( \Delta x_i \right) - c_{4,i}\left( \Delta x_i \right),\]
\[c_{4,i} = \left( s_i + s_{i+1} - 2\left[ x_i, x_{i+1} \right]f \right) / {\left( \Delta x_i \right)}^2,\]
\[s_i = f^{\left( 1 \right)}\left( x_i \right).\]
The following boundary conditions are supported for Hermite spline:
Free end (\(f^{(2)}(x_1) = f^{(2)}(x_n) = 0\)).
Periodic.
First derivative.
Second Derivative.