6.2 エルミート補間
ラグランジュ補間公式は標本点において関数値が一致する近似式を与えた. これに対して, エルミート補間はやはり多項式を使用するが標本点において関数値の他に微分値も一致する近似式を与える.6.2.1 エルミート補間
区間 \([a, b]\) 内の n + 1 個の相異なる点 \(x_0, x_1, \dots, x_n\) における関数 \(f(x)\) の値 \(f(x_0), f(x_1), \dots, f(x_n)\) および微分値 \(f'(x)\) の値 \(f'(x_0), f'(x_1), \dots, f'(x_n)\) がデータとして与えられているとき, これらの点における関数値および微分値がデータに一致するような近似式を考える.
条件が 2n + 2 個あるので, これを満足するためには 2n + 2 個の係数がある 2n + 1 次多項式 \(p_{2n+1}(x)\) が必要で, 次式を満たす.
\[
\begin{align}
& p_{2n+1}(x_k) = f(x_k) (k = 0 \sim n) \\
& p_{2n+1}'(x_k) = f'(x_k) (k = 0 \sim n) \\
\end{align}
\]
\(p_{2n+1}(x)\) の係数を \(a_0, a_1, \dots, a_{2n+1}\) とすると
\[
\begin{align}
& p_{2n+1}(x) = \sum_{i=0}^{2n+1}a_ix^{2n+1-i} \\
& p_{2n+1}'(x) = \sum_{i=0}^{2n+1}(2n+1-i)a_ix^{2n-i} \\
\end{align}
\]
であるから, 次の連立一次方程式を解くことにより近似多項式の係数を求めることができる.
\[
\boldsymbol{V}\boldsymbol{a} = \boldsymbol{f}
\]
ただし,
\[
\boldsymbol{V} =
\begin{pmatrix}
x_0^{2n+1} & x_0^{2n} & \dots & x_0 & 1 \\
(2n+1)x_0^{2n} & (2n)x_0^{2n-1} & \dots & 1 & 0 \\
x_1^{2n+1} & x_1^{2n} & \dots & x_1 & 1 \\
(2n+1)x_1^{2n} & (2n)x_1^{2n-1} & \dots & 1 & 0 \\
& \vdots \\
x_n^{2n+1} & x_n^{2n} & \dots & x_n & 1 \\
(2n+1)x_n^{2n} & (2n)x_n^{2n-1} & \dots & 1 & 0 \\
\end{pmatrix}
,
\boldsymbol{a} =
\begin{pmatrix}
a_0 \\
a_1 \\
a_2 \\
a_3 \\
\vdots \\
a_{2n} \\
a_{2n+1} \\
\end{pmatrix}
,
\boldsymbol{f} =
\begin{pmatrix}
f_0 \\
f’_0 \\
f_1 \\
f’_1 \\
\vdots \\
f_n \\
f’_n \\
\end{pmatrix}
\]
ここで, \(\boldsymbol{V}\) は連立一次方程式の係数行列, \(\boldsymbol{f}\) は連立一次方程式の右辺ベクトル (各点における関数値 \(f_i = f(x_i)\) および微分値 \(f’_i = f'(x_i)\) を表す), \(\boldsymbol{a}\) は連立一次方程式の解ベクトル (多項式の係数) となる.
エルミート補間においても, 6.1.1 多項式補間と同様に \(x_0, x_1, \dots, x_n\) が相異なる点であればこの連立一次方程式は解を持つ. しかしながら, やはり連立一次方程式を解く計算法は方程式の条件数などの点から好ましくなく, ニュートン補間に似た以下の計算法が用いられる.
n + 1 個の標本点 \(x_0, x_1, \dots, x_n\) があるときに, \(j = 0 \sim n\) について
\[
\begin{align}
& u_{2j} = x_j \\
& u_{2j+1} = x_j \\
\end{align}
\]
とする.
差分商の計算を次のように変形する.
\[
\begin{align}
& f[u_i] = f(u_i) (i = 0 \sim 2n+1) \\
& f[u_i, u_{i+1}] = f'(u_i) (i = 0, 2, \dots, 2n) \\
& f[u_i, u_{i+1}] = (f[u_{i+1}] – f[u_i])/(u_{i+1} – u_i) (i = 1, 3, \dots, 2n-1) \\
& f[u_i, \dots, u_{i+k}] = (f[u_{i+1}, \dots, u_{i+k}] – f[u_i, \dots, u_{i+k-1}])/(u_{i+k} – u_i) (k = 2 \sim 2n + 1, i = 0 \sim 2n + 1 – k) \\
\end{align}
\]
関数 \(f(x)\) の補間値は次式で求められる.
\[
\begin{align}
f(x) & = f[u_0] \\
& + (x – u_0)f[u_0, u_1] \\
& + (x – u_0)(x – u_1)f[u_0, u_1, u_2] \\
& + \dots \\
& + (x – u_0)(x – u_1) \dots (x – u_{2n+1})f[u_0, u_1, \dots, u_{2n+1}] \\
\end{align}
\]
6.2.2 数値実験
6.1.2 と同様に, 区間 \([-1, 1]\) において次の指数関数をエルミート補間する.
\[
f(x) = 2e^{x-1} – 1
\]
\(n = 2 \sim 5\) として (すなわち, \(5 \sim 11\) 次多項式を用いて) 補間を行う. ただし, 区間 \([-1, 1]\) を \(n\) 等分して, 両端を含め等間隔に並んだ \(n + 1\) 点における関数値および微分値をデータとして使用する.

縦軸を誤差 (補間値 – 厳密値) としてプロットすると次のようになる.

同じ標本点数のときには, エルミート補間多項式の次数はラグランジュ補間多項式の倍になるため精度がよい. 1 つの標本点において, 関数値に加えて微分値も容易に得ることができるならばラグランジュ補間より有利と思われる.


