行列式の性質#

線形性・交代性・規格化#

\(A\)\(n\) 次の正方行列 \(A=(\boldsymbol{a}_1, \cdots, \boldsymbol{a}_n)\)とする。

行列式を以下の3つの性質をもつものとする定義に従えば、定義から以下の性質を持つ。

線型性

\(\left|\boldsymbol{a}_1, \cdots, \boldsymbol{a}_n\right|\) は、各列について線型である。

\[\begin{split} \begin{aligned} & \left|\boldsymbol{a}_1, \cdots, c \boldsymbol{a}_k+c^{\prime} \boldsymbol{a}_k^{\prime}, \cdots, \boldsymbol{a}_n\right| \\ & \quad=c\left|\boldsymbol{a}_1, \cdots, \boldsymbol{a}_k, \cdots, \boldsymbol{a}_n\right|+c^{\prime}\left|\boldsymbol{a}_1, \cdots, \boldsymbol{a}_k^{\prime}, \cdots, \boldsymbol{a}_n\right| \end{aligned} \end{split}\]

1つのベクトル(行や列)に対して\(c\)倍すると行列式が\(c\)倍になり、行列全体に対して\(c\)倍すると行列式が\(c^n\)倍になることから、 多重線形性 という呼び方をする本もある(平岡和幸, & 堀玄. (2004). プログラミングのための線形代数. 株式会社 オーム社.)

\[\begin{split} \def\b#1{\boldsymbol{#1}} \begin{align} |c \b{a}_1, \b{a}_2, \cdots, \b{a}_n| &= c |\b{a}_1, \b{a}_2, \cdots, \b{a}_n|\\ |\b{a}_1 + \b{a}_1', \b{a}_2, \cdots, \b{a}_n| &= |\b{a}_1, \b{a}_2, \cdots, \b{a}_n| + |\b{a}_1', \b{a}_2, \cdots, \b{a}_n|\\ |c\b{A}| &= c^n |\b{A}| \end{align} \end{split}\]

交代性

\(i\) 列と第 \(j\)\((i \neq j)\) を入れかえ、他はそのままとすると、値が符号だけ変わる

\[ \left|\boldsymbol{a}_1, \cdots, \boldsymbol{a}_i, \cdots, \boldsymbol{a}_j, \cdots, \boldsymbol{a}_n\right| = -|\boldsymbol{a}_1, \cdots, \overbrace{\boldsymbol{a}_j}^{i}, \cdots, \overbrace{\boldsymbol{a}_i}^{j}, \cdots, \boldsymbol{a}_n| \]

規格化

単位行列 \(I=(\boldsymbol{e}_1, \cdots, \boldsymbol{e}_n)\) に対しては

\[ |I|=1 \]

明示公式からの導出#

ライプニッツの明示公式

\[ |A| = \sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots a_{i \sigma(i)} \cdots a_{n \sigma(n)} \]

に基づく説明

線形性#

まず定数倍について

1つの列(列)を \(c\) 倍すると、行列式は \(c\) 倍になる

\[\begin{split} \begin{aligned} \left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ c a_{i 1} & \cdots & c a_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right| & =\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots\left(c a_{i \sigma(i)}\right) \cdots a_{n \sigma(n)} \\ & =c \sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots a_{i \sigma(i)} \cdots a_{n \sigma(n)} \\ & = c\left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ a_{i 1} & \cdots & a_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right| \end{aligned} \end{split}\]

続いて和について

1つの行が 2つの行べクトルの和である行列の行列式は、他の行は同じでその行を各々の列べクトルとした行列の行列式の和になる

\[\begin{split} \left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ b_{i 1}+c_{i 1} & \cdots & b_{i n}+c_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right|=\left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ b_{i 1} & \cdots & b_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right|+\left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ c_{i 1} & \cdots & c_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right| \end{split}\]

証明:

\[\begin{split} \begin{aligned} \text { 左辺 } & =\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots\left(b_{i \sigma(i)}+c_{i \sigma(i)}\right) \cdots a_{n \sigma(n)} \\ & =\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma)\left\{a_{1 \sigma(1)} \cdots b_{i \sigma(i)} \cdots a_{n \sigma(n)}+a_{1 \sigma(1)} \cdots c_{i \sigma(i)} \cdots a_{n \sigma(n)}\right\} \\ & =\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots b_{i \sigma(i)} \cdots a_{n \sigma(n)}+\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots c_{i \sigma(i)} \cdots a_{n \sigma(n)} \\ & =\text { 右辺 } \end{aligned} \end{split}\]

交代性#

\[\begin{split} \left|\begin{array}{cccc} a_{11} & \cdots & \cdots & a_{1 n} \\ \vdots & & & \vdots \\ a_{j 1} & \cdots & \cdots & a_{j n} \\ \vdots & & & \vdots \\ a_{i 1} & \cdots & \cdots & a_{i n} \\ \vdots & & & \vdots \\ a_{n 1} & \cdots & \cdots & a_{n n} \end{array}\right| = - \left|\begin{array}{cccc} a_{11} & \cdots & \cdots & a_{1 n} \\ \vdots & & & \vdots \\ a_{i 1} & \cdots & \cdots & a_{i n} \\ \vdots & & & \vdots \\ a_{j 1} & \cdots & \cdots & a_{j n} \\ \vdots & & & \vdots \\ a_{n 1} & \cdots & \cdots & a_{n n} \end{array}\right| \end{split}\]

という性質。

証明:

\(n\) 文字の各置換 \(\sigma\) に対して \(\sigma\) に右から互換 \((i \quad j)\) をかけた置換を \(\tau\) とおく。すなわち、 \(\tau=\sigma(i \quad j)\)

このとき、

\[ \tau(i)=\sigma(j), \quad \tau(j)=\sigma(i), \quad \tau(k)=\sigma(k) \quad(k \neq i, j) \]

となる。符号は

\[ \operatorname{sgn}(\tau) = \operatorname{sgn}(\sigma(i \quad j)) = \operatorname{sgn}(\sigma) \cdot \operatorname{sgn}(i \quad j) = -\operatorname{sgn}(\sigma) \]

となる。

\[\begin{split} \begin{aligned} \text { 左辺 } & =\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots a_{j \sigma(i)} \cdots a_{i \sigma(j)} \cdots a_{n \sigma(n)} \\ & =\sum_{\tau \in S_n}(-\operatorname{sgn}(\tau)) a_{1 \tau(1)} \cdots a_{j \tau(j)} \cdots a_{i \tau(i)} \cdots a_{n \tau(n)} \\ & =-\sum_{\tau \in S_n} \operatorname{sgn}(\tau) a_{1 \tau(1)} \cdots a_{i \tau(i)} \cdots a_{j \tau(j)} \cdots a_{n \tau(n)} \\ & =\text { 右辺 } \end{aligned} \end{split}\]

規格化#

三角行列の行列式は対角成分の積になるという定理(後述)から、\(|I|=1\)

行列式の積 = 積の行列式#

乗法性

\(n\)次正方行列\(A,B\)に対して

\[ |AB| = |A|\cdot |B| \]

が成り立つ

証明

\(B=(\boldsymbol{b}_1, \cdots, \boldsymbol{b}_n)\)とおくと、線形性により、

\[ |AB|=|A\boldsymbol{b}_1, \cdots, A\boldsymbol{b}_n|=c|\boldsymbol{b}_1, \cdots, \boldsymbol{b}_n| \]

\(B=I\)のとき、\(c=|AI|=|A|\)

よって \(|AB| = c|B| = |A||B|\)

転置行列の行列式#

転置不変性

\(n\)次の正方行列\(A\)に対して、\(A\)の行列式と転置行列\(A^T\)の行列式は等しい、すなわち

\[ |A| = |A^T| \]

が成り立つ

転置不変性のため、列に成り立つことは行でも成り立つ。

逆行列の行列式#

逆行列の行列式

\(n\)次の正則行列\(A\)について

\[ |A^{-1}|=|A|^{-1} \]

が成り立つ

証明
\[ |A| |A^{-1}|=|A A^{-1}|=|I|=1 \]
\[ |A| |A^{-1}| = 1 \to |A^{-1}| = \frac{1}{|A|} \]

ゆえに \(|A^{-1}|=|A|^{-1}\) が成り立つ

ゼロが多い行列の行列式#

行列の\((1,1)\)成分以外の第1列の成分がすべてゼロのとき、以下が成り立つ

\[\begin{split} \left|\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ 0 & a_{22} & \cdots & a_{2 n} \\ \vdots & \vdots & & \vdots \\ 0 & a_{n 2} & \cdots & a_{n n} \end{array}\right|=a_{11}\left|\begin{array}{ccc} a_{22} & \cdots & a_{2 n} \\ \vdots & & \vdots \\ a_{n 2} & \cdots & a_{n n} \end{array}\right| \end{split}\]
証明

\(A=(a_{ij})\)とおく。行列の\((1,1)\)成分以外の第1列の成分がすべてゼロのとき、\(a_{21} = a_{31} = \cdots = a_{n1} = 0\)になる。

\(\sigma(k)=1\)となる\(k>1\)があるため、それについては\(a_{k\sigma(k)} = a_{k1} = 0\)となる。そのため

\[ a_{1 \sigma(1)} a_{2 \sigma(2)} \cdots a_{k \sigma(k)} \cdots a_{n \sigma(n)}=0 \]

となる。つまり、\(\sigma(1) > 1\)となる項はすべて\(0\)になる。 そのため和は\(\sigma(1)=1\)となる置換のみにわたって計算すればよい。

\[\begin{split} \begin{aligned} |A| & =\sum_{\substack{\sigma \in S_n \\ \sigma(1)=1}} \operatorname{sgn}(\sigma) a_{11} a_{2 \sigma(2)} \cdots a_{n \sigma(n)} \\ & =a_{11} \sum_{\substack{\sigma \in S_n \\ \sigma(1)=1}} \operatorname{sgn}(\sigma) a_{2 \sigma(2)} \cdots a_{n \sigma(n)} \\ & =a_{11} \sum_{\tau \in S_{n-1}} \operatorname{sgn}(\tau) a_{2 \tau(2)} \cdots a_{n \tau(n)} \end{aligned} \end{split}\]

ここで\(S_{n-1}\)は1を除く\(n-1\)個の文字\(\{2, 3, \cdots, n\}\)からなる置換の集合である。

三角行列の行列式#

上三角行列の行列式

上三角行列\(A\)の行列式\(|A|\)は、\(A\)の対角成分の積に等しい。すなわち、以下が成り立つ

\[ |A| = a_{11} a_{22} \cdots a_{nn} \]
証明

前出の定理を繰り返し適用する。すなわち

\[\begin{split} \begin{align} |A| &= a_{11}\left|\begin{array}{cccc} a_{22} & \cdots & \cdots & a_{2 n} \\ 0 & \ddots & & \\ \vdots & \ddots & \ddots & \vdots \\ 0 & \cdots & 0 & a_{n n} \end{array}\right| \\ &= a_{11} a_{22}\left|\begin{array}{cccc} a_{33} & \cdots & \cdots & a_{3 n} \\ 0 & \ddots & & \vdots \\ \vdots & \ddots & \ddots & \vdots \\ 0 & \cdots & 0 & a_{n n} \end{array}\right| \end{align} \end{split}\]

これを続ければ

\[ = a_{11} a_{22} \cdots a_{nn} \]

下三角行列の行列式

下三角行列\(A\)の行列式\(|A|\)は、\(A\)の対角成分の積に等しい。すなわち、以下が成り立つ

\[ |A| = a_{11} a_{22} \cdots a_{nn} \]
証明

行列を転置しても行列式の値は変わらない

\[ |A^T| = |A| \]

という性質を使い、下三角行列を転置して上三角行列にすることで

\[ |A| = a_{11} a_{22} \cdots a_{nn} \]

となる

変形に関する性質#

以下は行に関しても列に関しても成り立つ(転置不変性のため)

  1. 1 つの列を \(c\) 倍すると, 行列式は \(c\) 倍になる.

  2. 1 つの列の成分がすべて 0 である行列の行列式は 0 である.

  3. 1 つの列が 2 つの列べクトルの和である行列の行列式は, 他の列は同じでその列を各々の列べクトルとした行列の行列式の和になる.

  4. 2つの列を入れ換えると行列式は -1 倍になる.

  5. 行列の列の順序を置換 \(\tau\) によって変更すると行列式は \(\operatorname{sgn}(\tau)\) 倍になる.

  6. 2 つの列が等しい行列の行列式は 0 である.

  7. 1つの列に任意の数をかけて他の列に加えても行列式の値は変わらない.

1つの列を \(c\) 倍すると, 行列式は \(c\) 倍になる#

線形性によるもの。

行列\(A=(a_{ij})\)の1つの行を\(c\)倍すると、行列式は\(c\)倍になる

\[\begin{split} \left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ c a_{i 1} & \cdots & c a_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right|=c\left|\begin{array}{ccc} a_{11} & \cdots & a_{1 n} \\ \vdots & & \vdots \\ a_{i 1} & \cdots & a_{i n} \\ \vdots & & \vdots \\ a_{n 1} & \cdots & a_{n n} \end{array}\right| \end{split}\]
証明
\[\begin{split} \begin{aligned} \text { 左辺 } & =\sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots\left(c a_{i \sigma(i)}\right) \cdots a_{n \sigma(n)} \\ & =c \sum_{\sigma \in S_n} \operatorname{sgn}(\sigma) a_{1 \sigma(1)} \cdots a_{i \sigma(i)} \cdots a_{n \sigma(n)} \\ & =\text { 右辺 } \end{aligned} \end{split}\]

2つの列が等しい行列の行列式は0#

2つの列が等しい行列の行列式は0

\(n\)次正方行列\(A\)のうち2つの列が等しければ、\(|A|=0\)

証明
\[ |A| = |\begin{array}{ccccc} \boldsymbol{a}_1 & \cdots & \boldsymbol{a}_i & \cdots & \boldsymbol{a}_j & \cdots & \boldsymbol{a}_n \end{array}| \]

とする。

\(\boldsymbol{a}_i = \boldsymbol{a}_j\)として、これらを\(\boldsymbol{a}_*\)で表すことにすると、2つの列を入れ替えると行列式の符号は変わるため、

\[ |\begin{array}{ccccc} \boldsymbol{a}_1 & \cdots & \boldsymbol{a}_* & \cdots & \boldsymbol{a}_* & \cdots & \boldsymbol{a}_n \end{array}| = -|\begin{array}{ccccc} \boldsymbol{a}_1 & \cdots & \boldsymbol{a}_* & \cdots & \boldsymbol{a}_* & \cdots & \boldsymbol{a}_n \end{array}| = 0 \]

1次従属な行列の行列式は0

同様に、 \(n\)次正方行列\(A\)のうち異なる2つの列が1次従属 \(\left(\boldsymbol{a}_i=k \boldsymbol{a}_j\right)\) ならば、 \(\left|\boldsymbol{a}_1, \cdots, \boldsymbol{a}_n\right|=|A|=0\)

基本変形に対する不変性#

1つの行(列)に任意の数をかけて他の行(列)に加えても行列式の値は変わらない

行列\((\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{c})\)について、線形性と交代性により

\[ |\boldsymbol{a}+k \boldsymbol{c}, \boldsymbol{b}, \boldsymbol{c}| =|\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{c}| + k \underbrace{ |\boldsymbol{c}, \boldsymbol{b}, \boldsymbol{c}| }_{ =0} =|\boldsymbol{a}, \boldsymbol{b}, \boldsymbol{c}| \]

\(|\boldsymbol{c}, \boldsymbol{b}, \boldsymbol{c}|\)は同じ列が2つあるため、行列式は\(0\)になる

例:

1つの行(列)に任意の数をかけて他の行(列)に加えても行列式の値は変わらない

という定理により、ある行を定数倍して他の行に加える操作によって行列を変形して解くことができる。

\[\begin{split} \left|\begin{array}{rrr} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{array}\right| \end{split}\]

を求めたいとき、これは3次なのでサラスの方法でもよいが、変形して解いてもよい。

  • 第1行を4倍して第2行から引く

  • 第1行を7倍して第3行から引く

という操作を行って

\[\begin{split} \left|\begin{array}{ccc} 1 & 2 & 3 \\ 0 & -3 & -6 \\ 0 & -6 & -12 \end{array}\right| \end{split}\]

として、第1列は\((1,1)\)要素以外が0になったことを利用して

\[\begin{split} \left|\begin{array}{ccc} 1 & 2 & 3 \\ 0 & -3 & -6 \\ 0 & -6 & -12 \end{array}\right| = 1 \times \left|\begin{array}{cc} -3 & -6 \\ -6 & -12 \end{array}\right| = -3 \times (-12) - (-6)^2 = 36 - 36 = 0 \end{split}\]

としてもよい。

2つの列を入れ換えると行列式は -1 倍になる#

交代性より、あるいは明示公式から

ブロック行列の行列式#

\[\begin{split} T = \left(\begin{array}{ll} A & B \\ C & D \end{array}\right) \end{split}\]

とする。

\(A\) が正則なとき, \(|T| = |A| |D-C A^{-1} B|\)

\(D\) が正則なとき, \(|T| = |D| |A-B D^{-1} C|\)

対角なブロック行列には以下が成立する

\[\begin{split} \left|\begin{array}{ll} A & B\\ B & A \end{array}\right| = | A + B | |A - B| \end{split}\]

参考:行列式 |A B // B A| = |A-B||A+B| の証明 | ばたぱら

多重線形性#

行列\(A=(a_1, \cdots, a_n)\)について

\[\begin{split} \def\b#1{\boldsymbol{#1}} \DeclareMathOperator{\det}{\text{det}} \begin{align} \det(c \b{a}_1, \b{a}_2, \cdots, \b{a}_n) &= c \det(\b{a}_1, \b{a}_2, \cdots, \b{a}_n)\\ \det(\b{a}_1 + \b{a}_1', \b{a}_2, \cdots, \b{a}_n) &= \det(\b{a}_1, \b{a}_2, \cdots, \b{a}_n) + \det(\b{a}_1', \b{a}_2, \cdots, \b{a}_n)\\ \det(c\b{A}) = c^n \det(\b{A}) \end{align} \end{split}\]

のように任意の列への線形和が全体への線形和と等しいような法則性があること

import numpy as np
A = np.array([
    [1, 2],
    [1, 3]
])
print(f"det(A) = {np.linalg.det(A)}")

c = 5
print(f"det(cA) = {np.linalg.det(c * A):.1f}")
print(f"det(cA) - c^n det(A) = {np.linalg.det(c * A) - c**A.shape[0] * np.linalg.det(A):.1f}")
det(A) = 1.0
det(cA) = 25.0
det(cA) - c^n det(A) = -0.0
A[:, 0] *= c
A
array([[5, 2],
       [5, 3]])
np.linalg.det(A)
4.999999999999999

参考文献#

  • 川久保勝夫(2010)『線形代数学 (新装版)』