19. 行列式
線形代数学 I 第16回講義ノート:余因子展開による行列式の計算
はじめに
行列式の計算は、線形代数の多くの場面で必要となります。しかし、定義通りに計算するのは、行列のサイズが大きくなると非常に手間がかかります。今回は、この計算を劇的に効率化する「余因子展開 (Cofactor Expansion)」という強力な手法を学びます。そして、その特殊な場合である「還元定理」についても解説します。
スライド: こちら
演習問題: こちら
1. 余因子展開とは?
余因子展開は、大きな行列の行列式を、より小さなサイズの行列式の計算に分解していく方法です。この方法を理解するために、まず2つの重要な用語を定義します。
1.1 小行列と余因子
定義:小行列 (Minor) と余因子 (Cofactor)
\(n\) 次正方行列 \(A = (a_{ij})\) を考えます。
- 小行列 \(M_{ij}\): 行列 \(A\) から第 \(i\) 行と第 \(j\) 列を取り除いて作られる \((n-1)\) 次の正方行列を、\(a_{ij}\) の小行列と呼びます。
- 余因子 \(A_{ij}\): 小行列 \(M_{ij}\) の行列式に、符号 \((-1)^{i+j}\) を掛けたものを、\(a_{ij}\) の余因子と呼びます。
\[A_{ij} = (-1)^{i+j} \det(M_{ij})\]符号 \((-1)^{i+j}\) は、場所 \((i, j)\) によって次のように市松模様に決まります。 \(\(\begin{pmatrix} + & - & + & \dots \\ - & + & - & \dots \\ + & - & + & \dots \\ \vdots & \vdots & \vdots & \ddots \end{pmatrix}\)\)
具体例:余因子を計算してみよう
行列 \(D = \begin{pmatrix} 2 & 3 & 1 \\ 4 & 1 & 5 \\ 0 & 2 & 6 \end{pmatrix}\) で考えてみましょう。
-
\(d_{11}=2\) の余因子 \(D_{11}\):
- 小行列 \(M_{11} = \begin{pmatrix} 1 & 5 \\ 2 & 6 \end{pmatrix}\)
- 余因子 \(D_{11} = (-1)^{1+1} \det(M_{11}) = 1 \cdot (1 \cdot 6 - 5 \cdot 2) = -4\)
-
\(d_{32}=2\) の余因子 \(D_{32}\):
- 小行列 \(M_{32} = \begin{pmatrix} 2 & 1 \\ 4 & 5 \end{pmatrix}\)
- 余因子 \(D_{32} = (-1)^{3+2} \det(M_{32}) = (-1) \cdot (2 \cdot 5 - 1 \cdot 4) = -6\)
1.2 余因子展開の公式
定理:余因子展開
\(n\) 次正方行列 \(A\) の行列式は、任意の1つの行または列を選び、その各要素と対応する余因子の積をすべて足し合わせることで計算できます。
- 第 \(i\) 行による展開: \(\det(A) = \sum_{j=1}^{n} a_{ij} A_{ij} = a_{i1}A_{i1} + a_{i2}A_{i2} + \dots + a_{in}A_{in}\)
- 第 \(j\) 列による展開: \(\det(A) = \sum_{i=1}^{n} a_{ij} A_{ij} = a_{1j}A_{1j} + a_{2j}A_{2j} + \dots + a_{nj}A_{nj}\)
計算のコツ ✨ どの行や列で展開しても結果は同じです。計算を楽にするために、0(ゼロ)を最も多く含む行または列を選ぶのが鉄則です。
具体例:余因子展開で計算してみよう
行列 \(B = \begin{pmatrix} 3 & 1 & 2 \\ 0 & 2 & -1 \\ 4 & 0 & 3 \end{pmatrix}\) の行列式を計算します。
この行列は第2列に0が1つ含まれているので、第2列で展開するのが効率的です。 \(\(\det(B) = b_{12} B_{12} + b_{22} B_{22} + b_{32} B_{32}\)\)
ここで \(b_{32}=0\) なので、\(b_{32}B_{32}\) の項は計算不要です。
- \(b_{12}=1\) の余因子: \(B_{12} = (-1)^{1+2} \det\begin{pmatrix} 0 & -1 \\ 4 & 3 \end{pmatrix} = (-1)(0 - (-4)) = -4\)
- \(b_{22}=2\) の余因子: \(B_{22} = (-1)^{2+2} \det\begin{pmatrix} 3 & 2 \\ 4 & 3 \end{pmatrix} = (1)(9 - 8) = 1\)
したがって、行列式は次のようになります。 \(\(\det(B) = 1 \cdot (-4) + 2 \cdot (1) + 0 \cdot B_{32} = -4 + 2 + 0 = -2\)\)
2. 還元定理(余因子展開の最強パターン)
余因子展開が特に強力になる、最も計算が簡単なケースがあります。これをこの講義では「還元定理」と呼びます。
定義:還元定理
ある行(または列)に、1つの要素を除いて残りの \(n-1\) 個がすべて0である場合、その行列式は、その唯一の非ゼロ要素 \(a_{ij}\) とその余因子 \(A_{ij}\) の積だけで計算できる。
\[\det(A) = a_{ij} A_{ij}\]
これは、余因子展開の公式で、1つの項以外がすべて0になる特別な場合に他なりません。
具体例:還元定理を使ってみよう
行列 \(A = \begin{pmatrix} 4 & 0 & 0 \\ 2 & 3 & 5 \\ 1 & 2 & 6 \end{pmatrix}\) を考えます。
第1行には \(a_{11}=4\) 以外に2つの0があります。したがって、還元定理が使えます。
たったこれだけで、3次行列の行列式が計算できました。
3. 行基本変形との組み合わせ
行列に都合よく0がたくさんあれば良いですが、常にそうなっているとは限りません。そこで、行基本変形を使って行列に0を作り出し、計算しやすい形に変形する戦略が有効です。
重要:行基本変形と行列式の値の変化
行基本変形を行うと、行列式の値が次のように変化します。 1. ある行を \(c\) 倍する: \(\det(B) = c \cdot \det(A)\) 2. 2つの行を入れ替える: \(\det(B) = - \det(A)\) 3. ある行の定数倍を他の行に加える: \(\det(B) = \det(A)\) (値は変わらない!)
この性質3が極めて重要です。この変形を使えば、行列式の値を変えずに、行列内に0を戦略的に作ることができます。
具体例:行基本変形で0を作ってから計算する
行列 \(C = \begin{pmatrix} 1 & 2 & 3 \\ 2 & 6 & 8 \\ 3 & 7 & 10 \end{pmatrix}\) の行列式を計算します。
このままでは0がありません。そこで、第1行を使って第2行と第3行の先頭を0にします。 (\(R_2 \to R_2 - 2R_1\), \(R_3 \to R_3 - 3R_1\) という操作は、性質3により行列式の値を変えません)
これで第1列に0が2つできました! ここで第1列について還元定理(余因子展開)を適用します。
よって、\(\det(C) = 0\) であることが簡単に分かりました。
まとめ:行列式計算の戦略
- まず行列を観察する:0(ゼロ)が多い行や列がないか探す。
- 0が多い行/列があれば:その行/列で余因子展開を行う。特に、非ゼロ要素が1つだけなら還元定理で一発計算!
- 0が少なければ:行基本変形(特にある行の定数倍を他の行に加える操作)を使って、どこか1つの行または列に0を集める。
- 繰り返し:展開後の小さな行列式も、同じ戦略で計算する。
この手順をマスターすれば、どんなサイズの行列式でも効率的に計算できるようになります。
補足:余因子行列と逆行列
今回学んだ「余因子」は、逆行列を求める公式にも登場します。正則行列 \(A\) の逆行列 \(A^{-1}\) は、次のように計算できます。
ここで \(\text{adj}(A)\) は「余因子行列」の転置行列であり、「随伴行列 (Adjugate Matrix)」と呼ばれます。余因子行列とは、元の行列の各要素を、対応する余因子で置き換えた行列のことです。このトピックは、また別の機会に詳しく学びましょう。
4. 還元定理の証明
定理1:行列式の還元
\(n\) 次正方行列 \(A\) の第 \(i\) 行において、第 \(j\) 列の成分 \(a_{ij}\) のみが非ゼロ(すなわち、\(k \neq j\) であるすべての \(k\) に対して \(a_{ik} = 0\))であるとする。このとき、\(A\) の行列式は次式で与えられる。
ここで、\(M_{ij}\) は \(A\) から第 \(i\) 行と第 \(j\) 列を取り除いて得られる \((n-1)\) 次の小行列であり、\(A_{ij}\) は \(a_{ij}\) の余因子である。
証明
本証明は、行列式が有する以下の2つの基本性質を公理として用いる。
-
行に関する多重線形性 (Multilinearity in rows): 行列式は各行ベクトルに関して線形である。すなわち、任意の行 \(i\) について、 (a) \(\det(\dots, \boldsymbol{r}_i + \boldsymbol{r'}_i, \dots) = \det(\dots, \boldsymbol{r}_i, \dots) + \det(\dots, \boldsymbol{r'}_i, \dots)\) (b) \(\det(\dots, c\boldsymbol{r}_i, \dots) = c \cdot \det(\dots, \boldsymbol{r}_i, \dots)\) for a scalar \(c\).
-
交代性 (Alternating property): 2つの異なる行を入れ替えると、行列式の符号が反転する。この性質の帰結として、同一の行を2つ以上持つ行列の行列式は \(0\) となる。
証明のステップ
Step 1: 多重線形性の適用
定理の仮定より、\(A\) の第 \(i\) 行ベクトル \(\boldsymbol{r}_i\) は、標準基底ベクトル \(\boldsymbol{e}_j = (0, \dots, 1, \dots, 0)\) (第 \(j\) 成分のみが1)を用いて次のように表現できる。 \(\(\boldsymbol{r}_i = (a_{i1}, a_{i2}, \dots, a_{in}) = (0, \dots, a_{ij}, \dots, 0) = a_{ij} \boldsymbol{e}_j\)\) この \(\boldsymbol{r}_i\) を行列式に代入し、性質 1(b) を適用することで、スカラー \(a_{ij}\) を行列式の外へ括り出す。 \(\(\det(A) = \det \begin{pmatrix} \boldsymbol{r}_1 \\ \vdots \\ a_{ij}\boldsymbol{e}_j \\ \vdots \\ \boldsymbol{r}_n \end{pmatrix} = a_{ij} \cdot \det \begin{pmatrix} \boldsymbol{r}_1 \\ \vdots \\ \boldsymbol{e}_j \\ \vdots \\ \boldsymbol{r}_n \end{pmatrix}\)\) (式 1.1)
ここで、右辺の行列式を持つ行列を \(A'\) とおく。\(A'\) は、元の行列 \(A\) の第 \(i\) 行が \(\boldsymbol{e}_j\) に置き換えられ、その \((i, j)\) 成分が \(1\) である行列である。
Step 2: 行および列の交換による \(A'\) の単純化
次に、行列 \(A'\) の行列式を評価する。これは、交代性(性質 2)を用いて行と列の交換を繰り返し、\(A'\) をより計算しやすい形式に変形することで行う。目標は、成分 '1' を \((1, 1)\) の位置へ移動させることである。
(i) 行交換: 第 \(i\) 行を、隣接する行と \(i-1\) 回交換することで第1行へ移動させる。 \(\(\det(A') = (-1)^{i-1} \det \begin{pmatrix} \boldsymbol{e}_j \\ \boldsymbol{r}_1 \\ \vdots \\ \boldsymbol{r}_{i-1} \\ \boldsymbol{r}_{i+1} \\ \vdots \\ \boldsymbol{r}_n \end{pmatrix}\)\) この操作により、元の \(A\) から第 \(i\) 行を除いた他の行の順序は保たれる。
(ii) 列交換: 上記で得られた行列において、第 \(j\) 列(成分 '1' を含む列)を、隣接する列と \(j-1\) 回交換することで第1列へ移動させる。 \(\(\det(A') = (-1)^{i-1} (-1)^{j-1} \det(A'') = (-1)^{i+j-2} \det(A'') = (-1)^{i+j} \det(A'')\)\) (式 1.2)
ここで、行列 \(A''\) は以下の構造を持つ。 $$ A'' = \begin{pmatrix} 1 & 0 & \cdots & 0 \ \mathbf{0} & & M_{ij} & \ \end{pmatrix} $$ \(A''\) の \((1,1)\) 成分は \(1\) であり、第1行の他の成分はすべて \(0\) である。また、第1列の \((1,1)\) 成分以外の成分もすべて \(0\) となる。なぜなら、元の行列 \(A\) において \(\boldsymbol{r}_k\) (\(k \neq i\)) の第 \(j\) 成分は \(a_{kj}\) であり、列交換後これらは \(A''\) の第1列の \((2,1), \dots, (n,1)\) 成分を構成するためである。 その結果、\(A''\) の \((1,1)\) 成分を除いた右下の \((n-1) \times (n-1)\) 部分行列は、まさしく元の行列 \(A\) から第 \(i\) 行と第 \(j\) 列を取り除いた小行列 \(M_{ij}\) に一致する。
Step 3: ブロック行列の行列式の計算
行列 \(A''\) はブロック上三角行列であるため、その行列式は対角ブロックの行列式の積に等しい。 \(\(\det(A'') = \det(1) \cdot \det(M_{ij}) = \det(M_{ij})\)\) (式 1.3)
Step 4: 結論
式 1.1, 1.2, 1.3 を結合する。
$$ \begin{aligned} \det(A) &= a_{ij} \cdot \det(A') && \text{(式 1.1 より)} \ &= a_{ij} \cdot (-1)^{i+j} \det(A'') && \text{(式 1.2 より)} \ &= a_{ij} \cdot (-1)^{i+j} \det(M_{ij}) && \text{(式 1.3 より)} \end{aligned} $$ 余因子 \(A_{ij}\) の定義 \(A_{ij} = (-1)^{i+j} \det(M_{ij})\) を用いれば、最終的に次式を得る。
(証明終)