差商

数学における**差商**（さしょう、; 分割差分、**差分商**）は、差分商をとる操作を再帰的に繰り返すことで与えられる。歴史的には対数表や三角函数表の計算に用いられ、チャールズ・バベッジの階差機関（初期の機械式計算機）はこれを実装するものとして設計された。

差商はニュートン補間における補間多項式の計算に用いることができる。

## 定義
 個の節点 (x_0, y_0),\ldots,(x_n, y_n) に対する、**前進差商**は \begin{align}{}
  [y_\nu] &:= y_\nu\quad (\nu \in \{ 0,\ldots,n\}),\\[5pt]
  [y_\nu,\ldots,y_{\nu+j}] & := \frac{[y_{\nu+1},\ldots , y_{\nu+j}] - [y_{\nu},\ldots , y_{\nu+j-1}]}{x_{\nu+j}-x_\nu}\quad (\nu\in\{0,\ldots,n-j\},\ j\in\{1,\ldots,n\})
\end{align} で定義される。同様に**後退差商**は \begin{align}{}
 [y_\nu] &:= y_{\nu}\quad(\nu \in \{ 0,\ldots,n\}),\\[5pt]
 [y_\nu,\ldots,y_{\nu-j}] &:= \frac{[y_\nu,\ldots , y_{\nu-j+1}] - [y_{\nu-1},\ldots , y_{\nu-j}]}{x_\nu - x_{\nu-j}} \quad (\nu\in\{j,\ldots,n\},\ j\in\{1,\ldots,n\})
\end{align} と定義される。

以下本項では主に前進差商のみを扱い、それを単に差商と呼ぶ。

### 等間隔の場合

節点（の -座標）が等間隔に並んでいるときには、前進差分（あるいは後退・中央の各有限差分）の定める差分商によって差商を記述することができる。この場合は、より一般の差商よりも計算が楽になる。注目すべきは、差商の分母が既知であるならば、差分商から差商を容易に回復することができることである。

すなわち、上と同じ節点のデータが与えられ、適当な数  に対して   となっているとき、前進差分は \begin{align}
 \Delta^{(0)} y_i &:= y_i,\\
 \Delta^{(k)} y_i &:= \Delta^{(k-1)}y_{i+1} - \Delta^{(k-1)}y_i\quad (k \ge 1)
\end{align} で定義される。前進差分と差商との関係は f[x_0, x_1, \ldots , x_k] = \frac{1}{k!h^k}\Delta^{(k)}f(x_0) と書ける。

### ニュートンの三角形
隣り合う二項から次の階数の項が次々に作られる様子は、パスカルの三角形の類似で、差商を三角形状に並べるとわかりよい。
: 
\begin{matrix}
x_0 & y_0 = [y_0] &           &               &                  \\
    &             & [y_0,y_1] &               &                  \\
x_1 & y_1 = [y_1] &           & [y_0,y_1,y_2] &                  \\
    &             & [y_1,y_2] &               & [y_0,y_1,y_2,y_3]\\
x_2 & y_2 = [y_2] &           & [y_1,y_2,y_3] &                  \\
    &             & [y_2,y_3] &               &                  \\
x_3 & y_3 = [y_3] &           &               &
\end{matrix}
 あるいは 
\begin{matrix}
y_0 &            &              &             \\
    & \Delta y_0 &              &             \\
y_1 &            & \Delta^2 y_0 &             \\
    & \Delta y_1 &              & \Delta^3 y_0\\
y_2 &            & \Delta^2 y_1 &             \\
    & \Delta y_2 &              &             \\
y_3 &            &              &
\end{matrix}


## 記法
節点が函数  を用いて (x_0, f(x_0)),\ldots,(x_n, f(x_n)) と与えられているときには、\begin{align}
 f[x_\nu] &:= f(x_{\nu}), \qquad \nu \in \{ 0,\ldots,n \},\\[5pt]
 f[x_\nu,\ldots,x_{\nu+j}] &:= \frac{f[x_{\nu+1},\ldots , x_{\nu+j}] - f[x_\nu,\ldots , x_{\nu+j-1}]}{x_{\nu+j}-x_\nu} \quad (\nu\in\{0,\ldots,n-j\},\ j\in\{1,\ldots,n\})
\end{align} と書くこともある。同様に [x_0,\ldots,x_n]f,\quad [x_0,\ldots,x_n;f],\quad D[x_0,\ldots,x_n]f などとも書く。

具体的に書き下せば: 
\begin{align}
f[x_0] &= f(x_0) \\
f[x_0,x_1] &= \frac{f(x_0)}{(x_0-x_1)} + \frac{f(x_1)}{(x_1-x_0)} \\
f[x_0,x_1,x_2] &= \frac{f(x_0)}{(x_0-x_1)\cdot(x_0-x_2)} + \frac{f(x_1)}{(x_1-x_0)\cdot(x_1-x_2)} + \frac{f(x_2)}{(x_2-x_0)\cdot(x_2-x_1)} \\
f[x_0,x_1,x_2,x_3] &= \frac{f(x_0)}{(x_0-x_1)\cdot(x_0-x_2)\cdot(x_0-x_3)} + \frac{f(x_1)}{(x_1-x_0)\cdot(x_1-x_2)\cdot(x_1-x_3)} + \frac{f(x_2)}{(x_2-x_0)\cdot(x_2-x_1)\cdot(x_2-x_3)} + \frac{f(x_3)}{(x_3-x_0)\cdot(x_3-x_1)\cdot(x_3-x_2)}\end{align}
 のようになる。一般に f[x_0,\dots,x_n] =
\sum_{j=0}^{n} \frac{f(x_j)}{\prod_{k=0,\ldots n; k\neq j} (x_j-x_k)}
 となり、これを多項式函数 q(\xi) = (\xi-x_0) \cdots (\xi-x_n) を用いてf[x_0,\dots,x_n] = \sum_{j=0}^{n} \frac{f(x_j)}{q'(x_j)} と書くことができる。また極限を用いて 
f[x_0,\dots,x_n] = \sum_{j=0}^{n} \lim_{x \to x_j} \left[ \frac{f(x_j)(x - x_j)}{\prod_{k=0}^{n} (x - x_k)} \right]
 とも書ける。

## 性質
* 線型性: \begin{align}
  &(f+g)[x_0,\dots,x_n] = f[x_0,\dots,x_n] + g[x_0,\dots,x_n]\\
  &(\lambda\cdot f)[x_0,\dots,x_n] = \lambda\cdot f[x_0,\dots,x_n]
\end{align}
* ライプニッツの法則: 
 (f\cdot g)[x_0,\dots,x_n] = f[x_0]\cdot g[x_0,\dots,x_n] + f[x_0,x_1]\cdot g[x_1,\dots,x_n] + \dots + f[x_0,\dots,x_n]\cdot g[x_n]
* 対称性: f[x_0, \dots, x_n] = f[x_{\sigma(0)}, \dots, x_{\sigma(n)}]\quad(\sigma\in S_n)
* 差商に対する平均値の定理より: f[x_0,\dots,x_n] = \frac{f^{(n)}(\xi)}{n!}\quad(\exists\xi\in(\min x_k, \max x_k))

## 別定義
### ペアノ形
次数  のBスプライン  を用いて、差商を f[x_0,\ldots,x_n] = \frac{1}{n!} \int_{x_0}^{x_n} f^{(n)}(t)B_{n-1}(t) \, dtと書くことができる。 は  の -階導函数である。

これを差商の**ペアノ形** (*Peano form*) と言い、 をこの差商のと呼ぶ。ともに名称はジゼッペ・ペアノに因む。

### テイラー形
考えている節点が集積しているならば、ほとんどゼロに近い値での割り算が生じ、相対誤差が大きくなるから、数値計算はおぼつかない。しかしその場合も、差分商を微分商で（あるいはその逆に）近似することはできる:\frac{f(y)-f(x)}{y-x} \approx f'(x) \quad (x \approx y).

この近似はテイラーの定理 
  f(y) = f(x) + f'(x)\cdot(y-x) + f*(x)\cdot\frac{(y-x)^2}{2!} + f*'(x)\cdot\frac{(y-x)^3}{3!} + \dotsb
 が適用できる函数に関しては等式 
  \frac{f(y) - f(x)}{y-x} = f'(x) + f*(x)\cdot\frac{y-x}{2!} + f*'(x)\cdot\frac{(y-x)^2}{3!} + \dotsb
に変えることができる。また、中央差分を利用すれば  の奇数冪の項を消すことができる: \frac{f(y) - f(x)}{y-x} = \frac{f(m+h) - f(m-h)}{2\cdot h} =
 f'(m) + f**(m)\cdot\frac{h^2}{3!} + \dotsb .</math>

原理的には、テイラー級数および任意のに差商近似が適用できる。テイラー級数は[[冪函数]]に関する無限和で、函数にその差商を対応させる写像  は[[線型汎函数]]であるから、基底函数にこの汎函数を適用すればよい。

通常の冪函数  によって、通常のテイラー級数を <math display="block">f = f(0)\cdot p_0 + f'(0)\cdot p_1 + \frac{f''(0)}{2!}\cdot p_2 + \frac{f**(0)}{3!}\cdot p_3 + \dotsc  と書けば、差商のテイラー級数は 
  f[x_0,\dots,x_n] = f(0)\cdot p_0[x_0,\dots,x_n] + f'(0)\cdot p_1[x_0,\dots,x_n] + \frac{f*(0)}{2!}\cdot p_2[x_0,\dots,x_n] + \frac{f*'(0)}{3!}\cdot p_3[x_0,\dots,x_n] + \dotsb
 と書けることになる。この最初の  項は多項式の次数よりも高階の差分だから消えており、それ以降の項も以下のように知ることができる: 
\begin{cases}
 p_j[x_0,\dots,x_n] = 0 & (j 

## 行列表示
多項式の差商はライプニッツの法則の恩恵を受けられる点で興味を持たれる。

行列  を J=\begin{pmatrix}
x_0 & 1 & 0 & 0 & \cdots & 0 \\
0 & x_1 & 1 & 0 & \cdots & 0 \\
0 & 0 & x_2 & 1 &        & 0 \\
\vdots & \vdots & & \ddots & \ddots & \\
\vdots & \vdots & & & \ddots & 1\\
0 & 0 & 0 & 0 &  \cdots & x_n
\end{pmatrix}
 とすれば、これは節点  に関する恒等写像  の差商をすべて包摂したものと考えることができる。特に  は冪函数  に対する差商が全て現れる。差商の線型性により、多項式  に対する多項式函数を  に適用したものは、\begin{align} p(J) 
 & = a_0\cdot I + a_1\cdot J + \dots + a_n\cdot J^n\\[5pt]
 & = \begin{pmatrix}
p[x_0] & p[x_0,x_1] & p[x_0,x_1,x_2] & \ldots & p[x_0,\dots,x_n] \\
0 & p[x_1] & p[x_1,x_2] & \ldots & p[x_1,\dots,x_n] \\[10pt]
\vdots & \ddots & \ddots & \ddots & \vdots \\[10pt]
0 & \ldots & 0 & 0 & p[x_n]
\end{pmatrix}
\end{align} と書くことができ、**オピッツの公式**と呼ばれる。

多項式  の次数を無限大に飛ばして形式冪級数とすれば、テイラー展開可能な函数  に対しても、その差商を  を用いた行列表示 T_f(x_0,\dots,x_n)= f(J) = 
\begin{pmatrix}
f[x_0] & f[x_0,x_1] & f[x_0,x_1,x_2] & \ldots & f[x_0,\dots,x_n] \\
0 & f[x_1] & f[x_1,x_2] & \ldots & f[x_1,\dots,x_n] \\[20pt]
\vdots & \vdots & \vdots & \ddots & \vdots \\
0 & 0 & 0 & \ldots & f[x_n]
\end{pmatrix} によって与えることができる。

節点  が全て等しいとき、 はジョルダン細胞であり、ジョルダン標準形を考えることでスカラー函数を行列函数に一般化することができる。

## 関連項目
* 差分商
* 
* 多項式補間
* 差商に関する平均値定理
* ネールント&ndash;ライス積分
* パスカルの三角形

## 参考文献

* 
* 
* 

## 外部リンク
* 
* 
* An implementation in Haskell.