スプライン補間 学習・計算ツール

点群データから補間曲線を生成し、計算過程も学べます

1. 補間設定・データ入力

※ 1行に1点、X Y の順で入力してください
※ 出力点数は(区間数 × 分割数 + 1)になります

2. 補間結果

3. スプライン補間の理論と計算過程

以下では 数式の導出(一般式)入力データに基づく実際の数値 を ステップごとに対比して表示します。「実行」ボタンを押すと、実際の値の欄が更新されます。

概要

三次スプライン補間では、N 個の入力点に対して N−1 個の区間を定義し、 各区間を独立した 3 次多項式で補間します。隣接区間の境界では 値・1階微分・2階微分がすべて一致する(連続する)ように係数を決定します。

通常補間(関数型)では Y = f(X)、 パラメトリック補間では X = x(t), Y = y(t) の形で扱います。 本アプリは自然スプライン(両端の 2 階微分 = 0)を採用しています。

STEP 1 区間幅 Δhk の計算
一般式

隣り合う入力点の X 座標(またはパラメータ t)の差を区間幅と呼びます:

$$ \Delta h_k = x_{k+1} - x_k \quad (k = 0, 1, \ldots, N-2) $$

各区間の補間式は、この Δhk で正規化されたパラメータ \(h = \dfrac{x - x_k}{\Delta h_k}\)(\(0 \le h \le 1\))で書かれます。 h = 0 が始点 \(x_k\)、h = 1 が終点 \(x_{k+1}\) です。

実際の値

← 実行すると値が表示されます

STEP 2 区間内の 3 次補間式
一般式

第 k 区間の補間式(\(d_k = y_k\) は既知):

$$ S_k(h) = a_k h^3 + b_k h^2 + c_k h + d_k $$

未知係数は各区間につき ak, bk, ck の 3 つ。 N−1 区間合計で 3(N−1) 個の未知数となります。

実際の値(各区間の係数)

← 実行すると値が表示されます

STEP 3 連立方程式の組み立て(行列方程式)

3(N−1) 個の未知数を求めるため、以下の条件から同数の方程式を立てます:

N−1 本 補間条件(各区間終点を通る)
\(a_k + b_k + c_k = y_{k+1} - y_k\)
N−2 本 1 階導関数連続(内部接合点)
\(\dfrac{3a_k+2b_k+c_k}{\Delta h_k} = \dfrac{c_{k+1}}{\Delta h_{k+1}}\)
N−2 本 2 階導関数連続(内部接合点)
\(\dfrac{6a_k+2b_k}{\Delta h_k^2} = \dfrac{2b_{k+1}}{\Delta h_{k+1}^2}\)
2 本 自然境界条件(両端の 2 階微分 = 0)
\(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] の実際の値

← 実行すると値が表示されます

右辺ベクトル [b](一般式)

← 実行すると表示されます

右辺ベクトル [b] の実際の値

← 実行すると値が表示されます

STEP 4 連立方程式を解いて係数を取得
一般式

ガウス・ジョルダン法(逆行列法)により解を求めます:

$$ \{x\} = [A]^{-1} \{b\} $$

得られた \(a_k, b_k, c_k\) と既知の \(d_k = y_k\) から、 各区間の補間式 \(S_k(h)\) が確定します。

実際の解ベクトル {x}

← 実行すると値が表示されます

STEP 5 確定した各区間のスプライン式

← 実行すると各区間の確定式が表示されます

参考資料

上記の理論の詳細な導出(行列の組み立て方や VBA 実装)については、以下の記事を参照してください:

📖 三次スプライン補間の導出及び Excel VBA での実装