余因子展開
数学の線型代数学における余因子展開(よいんしてんかい、cofactor expansion)、あるいはピエール・シモン・ラプラスの名に因んでラプラス展開とは、n次正方行列 A の行列式 A の、n 個の A の (n − 1)次小行列式の重み付き和としての表示である。余因子展開は行列式を見るいくつかの方法の一つとして理論的に興味深く、行列式の実際の計算においても有用である。
A の (i, j)余因子とは、次で定義されるスカラーである:
\widetilde{a}_{i,j} = (-1)^{i+j} M_{i,j}
ここで Mi,j は A の (i, j)小行列式、つまり、A から第i行と第j列を除いて得られる (n − 1)次小正方行列の行列式である。
すると余因子展開は次で与えられる:
A = (ai,j) を n次正方行列とし、任意の i, j ∈ 1, 2, …, n を固定する。
するとその行列式 A は次で与えられる:
\begin{align}
次の行列式の余因子展開を考える:
|A| = \begin{vmatrix}
1 &2 &3 \\
4 &5 &6 \\
7 &8 &9
\end{vmatrix}
行列式はその1つの行あるいは列に沿って余因子展開し計算することができる。例えば、第1行に沿って展開すると:
\begin{align}
|A| &= 1 \cdot \begin{vmatrix} 5 &6 \\ 8 &9 \end{vmatrix}
- 2 \cdot \begin{vmatrix} 4 &6 \\ 7 &9 \end{vmatrix}
+ 3 \cdot \begin{vmatrix} 4 &5 \\ 7 &8 \end{vmatrix} \\
&= 1 \cdot (-3) - 2 \cdot (-6) + 3 \cdot (-3) = 0
\end{align}
第2列に沿って余因子展開すると次のようになる:
\begin{align}
|A| &= -2 \cdot \begin{vmatrix} 4 &6 \\ 7 &9 \end{vmatrix}
+ 5 \cdot \begin{vmatrix} 1 &3 \\ 7 &9 \end{vmatrix}
- 8 \cdot \begin{vmatrix} 1 &3 \\ 4 &6 \end{vmatrix} \\
&= -2 \cdot (-6) + 5 \cdot (-12) - 8 \cdot (-6) = 0
\end{align}
結果が正しいことを確かめるのは易しい。実際、第1列と第3列を足すと第2列の2倍になるから行列は正則でなく、したがってその行列式は 0 である。
A を n次正方行列とし、i, j ∈ 1, 2, …, n を固定する。A の (i, j)小行列 Mi,j の成分を簡単のため (b_{s,t})_{1 \le s,t \le n-1} と書く。ai,j を因子に持つ A の展開項を考えると、それは σ(i) = j を満たす適当な置換 σ ∈ Sn により
(\sgn \sigma)\,a_{1,\sigma(1)} \cdots a_{i,j} \cdots a_{n,\sigma(n)}
= (\sgn \sigma)\,a_{i,j}\,b_{1,\tau(1)} \cdots b_{n-1,\tau(n-1)}
と表すことができる。ここで τ ∈ Sn−1 は行列式の展開項が等しくなるように σ から導かれるものであり、対応 τ ↔ σ は Sn−1 と σ ∈ Sn  の間の全単射である。τ は σ で次のように表せる:
\tau = \begin{bmatrix}
1 &\cdots &i-1 &i &\cdots &n-1 \\
(\leftarrow)_j \sigma(1) &\cdots &(\leftarrow)_j \sigma(i-1) &(\leftarrow)_j \sigma(i+1) &\cdots &(\leftarrow)_j \sigma(n)
\end{bmatrix}
ただし、(←)j はこの場だけの省略記法で、巡回置換 (n, n − 1, …, j + 1, j) を表すものとする。つまり、j より大きい番号は 1 ずつ減らし、j は n に写す置換(したがって、τ の像がきちんと集合 1, 2, …, n − 1 になる)を意味するものとする。
τ からもとの σ を以下のようにして導出することができる:τ ∈ Sn−1 を τ′ ∈ Sn に拡張すると(このとき τ′(n) = n にならざるを得ない)、
\tau' = \begin{bmatrix}
1 &\cdots &i-1 &i &\cdots &n-1 &n \\
(\leftarrow)_j \sigma(1) &\cdots &(\leftarrow)_j \sigma(i-1) &(\leftarrow)_j \sigma(i+1) &\cdots &(\leftarrow)_j \sigma(n) &n
\end{bmatrix}
と表せる。このとき、先に (←)i(これは巡回置換 (n, n − 1, …, i + 1, i) のことである)を施してから τ′ を施す置換 τ′(←)i も、σ を施してから (←)j を施す置換 (←)jσ も、どちらも次の置換になる:
\begin{bmatrix}
1 &\cdots &i-1 &i &i+1 &\cdots &n \\
(\leftarrow)_j \sigma(1) &\cdots &(\leftarrow)_j \sigma(i-1) &n &(\leftarrow)_j \sigma(i+1) &\cdots &(\leftarrow)_j \sigma(n)
\end{bmatrix}
したがって (←)jσ = τ′(←)i, 故に σ = (→)jτ′(←)i を得る(ただし、(→)j は (←)j の逆置換である (j, j + 1, …, n) を表すとする)。故に
\sigma = (j,j+1,\cdots,n)\tau'(n,n-1,\cdots,i)
ここに現れる2つの巡回置換はそれぞれ n − i個と n − j個の互換の積で表せるから
\sgn\sigma = (-1)^{2n-(i+j)} \sgn\tau' = (-1)^{i+j} \sgn\tau
であり、また写像 τ ↔ σ が全単射であったから、
\begin{align}
\textstyle\sum\limits_{\sigma \in S_n \atop \sigma(i)=j} (\sgn \sigma)\,a_{1,\sigma(1)} \cdots a_{n,\sigma(n)} &= \textstyle\sum\limits_{\tau \in S_{n-1} (-1)^{i+j}(\sgn\tau)\, a_{i,j}\,b_{1,\tau(1)} \cdots b_{n-1,\tau(n-1)} \\
&= a_{i,j} (-1)^{i+j} \left| M_{i,j} \right| \\
&= a_{i,j}\,\widetilde{a}_{i,j}
\end{align}
となり、ここから所期の結果が得られる。(証明終)
n次正方行列 A  (ai,j) の行列式を、第j列に沿って展開することを考える。
\begin{align}
\det A &= \begin{vmatrix}
a_{1,1} &\cdots &a_{1,j} &\cdots &a_{1,n} \\
\vdots  &       &\vdots  &       &\vdots  \\
a_{i,1} &\cdots &a_{i,j} &\cdots &a_{i,n} \\
\vdots  &       &\vdots  &       &\vdots  \\
a_{n,1} &\cdots &a_{n,j} &\cdots &a_{n,n} \\
\end{vmatrix} \\
& \\
&= \textstyle\sum\limits_{i=1}^n \,a_{i,j}\,\begin{vmatrix}
a_{1,1} &\cdots &0      &\cdots &a_{1,n} \\
\vdots  &       &\vdots &       &\vdots  \\
a_{i,1} &\cdots &1      &\cdots &a_{i,n} \\
\vdots  &       &\vdots &       &\vdots  \\
a_{n,1} &\cdots &0      &\cdots &a_{n,n} \\
\end{vmatrix} \\
& \\
&= \textstyle\sum\limits_{i=1}^n \,a_{i,j}\,\cdot (-1)^{(i-1)+(j-1)}\,\begin{vmatrix}
\;1         &0               &\cdots &\breve{0}       &\cdots &0 \\
\;0         &a_{1,1}         &\cdots &\breve{a}_{1,j} &\cdots &a_{1,n}  \\
\;\vdots    &\vdots          &       &\vdots          &       &\vdots \\
\;\breve{0} &\breve{a}_{i,1} &\cdots &\breve{a}_{i,j} &\cdots &\breve{a}_{i,n} \\
\;\vdots    &\vdots          &       &\vdots          &       &\vdots \\
\;0         &a_{n,1}         &\cdots &\breve{a}_{n,j} &\cdots &a_{n,n} \\
\end{vmatrix} \\
& \\
&= \textstyle\sum\limits_{i=1}^n \,a_{i,j}\,\cdot (-1)^{i+j}\,\begin{vmatrix}
a_{1,1}         &\cdots &\breve{a}_{1,j} &\cdots  &a_{1,n} \\
\vdots          &       &\vdots          &        &\vdots \\
\breve{a}_{i,1} &\cdots &\breve{a}_{i,j} &\cdots  &\breve{a}_{i,n} \\
\vdots          &       &\vdots          &        &\vdots \\
a_{n,1}         &\cdots &\breve{a}_{n,j} &\cdots  &a_{n,n} \\
\end{vmatrix} \\
&= \textstyle\sum\limits_{i=1}^n a_{i,j}\,\widetilde{a}_{i,j} \quad \blacksquare
\end{align}
第i行に沿う展開も同様である。(証明終)
余因子展開は次のように一般化できる。
A = \begin{bmatrix}
1  &2  &3  &4 \\
5  &6  &7  &8 \\
9  &10 &11 &12 \\
13 &14 &15 &16
\end{bmatrix}
を考える。この行列の行列式は最初の2行に沿った余因子展開を用いて次のように計算できる。まず 1, 2, 3, 4 には2つの相異なる数の集合が6つあることに注意。すなわち
S=\left\{\{1,2\},\{1,3\},\{1,4\},\{2,3\},\{2,4\},\{3,4\}\right\}
をそれらの集合とする。
b_{\{j,k\}=\begin{vmatrix}
a_{1j} &a_{1k} \\
a_{2j} &a_{2k}
\end{vmatrix}
c_{\{j,k\}=\begin{vmatrix}
a_{3j} &a_{3k} \\
a_{4j} &a_{4k}
\end{vmatrix}
と定義し、それらの置換の符号を
\varepsilon^{\{i,j\},\{p,q\}
=\operatorname{sgn}\begin{bmatrix}
1 &2 &3 &4 \\
i &j &p &q
\end{bmatrix}
と定義することで、A の行列式は
|A| = \sum_{H \in S} \varepsilon^{H,H'}b_{H}c_{H'}
と書き下せる。ただし H′ は H の補集合である。
我々の明示的な例でこれを計算すると次のようになる。
\begin{align}
|A| &=  b_{\{1,2\}c_{\{3,4\} -b_{\{1,3\}c_{\{2,4\} +b_{\{1,4\}c_{\{2,3\}+b_{\{2,3\}c_{\{1,4\} -b_{\{2,4\}c_{\{1,3\} +b_{\{3,4\}c_{\{1,2\} \\
&= \begin{vmatrix} 1 & 2 \\ 5 & 6 \end{vmatrix} \cdot \begin{vmatrix} 11 & 12 \\ 15 & 16 \end{vmatrix}
- \begin{vmatrix} 1 & 3 \\ 5 & 7 \end{vmatrix} \cdot \begin{vmatrix} 10 & 12 \\ 14 & 16 \end{vmatrix}
+ \begin{vmatrix} 1 & 4 \\ 5 & 8 \end{vmatrix} \cdot \begin{vmatrix} 10 & 11 \\ 14 & 15 \end{vmatrix}\\
&\quad  + \begin{vmatrix} 2 & 3 \\ 6 & 7 \end{vmatrix} \cdot \begin{vmatrix}  9 & 12 \\ 13 & 16 \end{vmatrix}
- \begin{vmatrix} 2 & 4 \\ 6 & 8 \end{vmatrix} \cdot \begin{vmatrix}  9 & 11 \\ 13 & 15 \end{vmatrix}
+ \begin{vmatrix} 3 & 4 \\ 7 & 8 \end{vmatrix} \cdot \begin{vmatrix}  9 & 10 \\ 13 & 14 \end{vmatrix}\\
&=  -4 \cdot (-4) -(-8)  \cdot (-8) +(-12) \cdot (-4) +(-4)  \cdot (-12) -(-8)  \cdot (-8) +(-4)  \cdot (-4)\\
&=  16 - 64 + 48 + 48 - 64 + 16 = 0
\end{align}
上と同様、結果が正しいことを確かめるのは容易である。実際、第1列と第3列を足すと第2列の2倍になるから行列は正則でなく、したがって行列式は 0 である。
B  (bij) を n次正方行列とし、S を 1, 2, …, n の k 元部分集合全体の集合とし、H をその元とする。すると B の行列式は H によって指定される k 個の行に沿って次のように展開できる:
|B| = \textstyle\sum\limits_{L\in S} \varepsilon^{H,L} b_{H,L} c_{H,L}
ただし εH,L は H と L によって決定される置換の符号で
(-1)^{\sum\limits_{h\in H} h + \sum\limits_{\ell\in L}\ell}
に等しく、bH,L は B から添え字がそれぞれ H と L に属している行と列を除いて得られる B の正方部分行列で、cH,L(bH,L の補行列と呼ばれる)は bH′,L′ と定義される。ここで H' と L' はそれぞれ H と L の補集合である。
これは k = 1 のとき冒頭の定理と一致する。同じことは任意の固定された k 個の列に対しても成り立つ。
余因子展開は高次行列に対しては計算的に非効率的である。なぜならば N次正方行列に対して計算のオーダーは N! だからである。したがって、余因子展開は大きい N に対して適切ではない。LU分解にあるように三角行列への分解を用いて、行列式を N3/3 のオーダーで決定できる。