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 
);

より複雑な例を確認するには、のセクションを参照してください。