3 次スプライン#
3 次スプラインは、次数が 3 に等しいスプラインです。
3 次スプラインは次の多項式で記述されます
\[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,\]
説明:
\[x \in \left[ x_i, x_{i+1} \right),\]
\[i = 1,\cdots , n-1.\]
3 次スプラインにはさまざまな種類があります: エルミート、ナチュラル、アキマ、ベッセル。ただし、現在の DPC++ API では、次の 1 つのタイプのみがサポートされています: エルミート
ヘッダーファイル#
#include<oneapi/mkl/experimental/data_fitting.hpp>名前空間#
oneapi::mkl::experimental::data_fitiingエルミートスプライン#
エルミートスプラインの係数は次の式を使用して計算されます。
\[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).\]
エルミートスプラインでは次の境界条件がサポートされています。
自由端 (\(f^{(2)}(x_1) = f^{(2)}(x_n) = 0\))。
周期的。
1 次導関数。
2 次導関数。
構文#
namespace cubic_spline {
struct hermite {};
}例#
3 次エルミート・スプライン・オブジェクトを作成するには、次のようにします。
spline<float, cubic_spline::hermite> val(
/* SYCL キュー・オブジェクト */ q,
/* スプライン関数の数 */ ny
);より複雑な例を確認するには、例のセクションを参照してください。