1. 補間設定・データ入力
2. 補間結果
3. スプライン補間の理論と計算過程
以下では 数式の導出(一般式) と 入力データに基づく実際の数値 を ステップごとに対比して表示します。「実行」ボタンを押すと、実際の値の欄が更新されます。
三次スプライン補間では、N 個の入力点に対して N−1 個の区間を定義し、 各区間を独立した 3 次多項式で補間します。隣接区間の境界では 値・1階微分・2階微分がすべて一致する(連続する)ように係数を決定します。
通常補間(関数型)では Y = f(X)、 パラメトリック補間では X = x(t), Y = y(t) の形で扱います。 本アプリは自然スプライン(両端の 2 階微分 = 0)を採用しています。
隣り合う入力点の X 座標(またはパラメータ t)の差を区間幅と呼びます:
各区間の補間式は、この Δhk で正規化されたパラメータ \(h = \dfrac{x - x_k}{\Delta h_k}\)(\(0 \le h \le 1\))で書かれます。 h = 0 が始点 \(x_k\)、h = 1 が終点 \(x_{k+1}\) です。
← 実行すると値が表示されます
第 k 区間の補間式(\(d_k = y_k\) は既知):
未知係数は各区間につき ak, bk, ck の 3 つ。 N−1 区間合計で 3(N−1) 個の未知数となります。
← 実行すると値が表示されます
3(N−1) 個の未知数を求めるため、以下の条件から同数の方程式を立てます:
\(a_k + b_k + c_k = y_{k+1} - y_k\)
\(\dfrac{3a_k+2b_k+c_k}{\Delta h_k} = \dfrac{c_{k+1}}{\Delta h_{k+1}}\)
\(\dfrac{6a_k+2b_k}{\Delta h_k^2} = \dfrac{2b_{k+1}}{\Delta h_{k+1}^2}\)
\(b_0 = 0,\quad \dfrac{6a_{N-2}+2b_{N-2}}{\Delta h_{N-2}^2} = 0\)
これらをまとめると 3(N−1) × 3(N−1) の行列方程式 [A]{x} = {b} になります。
← 実行すると点数に合わせた一般式が表示されます
← 実行すると値が表示されます
← 実行すると表示されます
← 実行すると値が表示されます
ガウス・ジョルダン法(逆行列法)により解を求めます:
得られた \(a_k, b_k, c_k\) と既知の \(d_k = y_k\) から、 各区間の補間式 \(S_k(h)\) が確定します。
← 実行すると値が表示されます
← 実行すると各区間の確定式が表示されます
上記の理論の詳細な導出(行列の組み立て方や VBA 実装)については、以下の記事を参照してください: