行列の階数(rank)#

\[ % 太字のalias \newcommand{\b}[1]{\boldsymbol{#1}} % 演算子の定義 \DeclareMathOperator{\im}{ \text{Im} } \DeclareMathOperator{\rank}{ \text{rank} } \DeclareMathOperator{\span}{ \text{Span} } \DeclareMathOperator{\Ker}{ \text{Ker} } \]

\(m\times n\)行列\(A\)に対し、\(A\)が定義する線形写像

\[ A: \mathbb{R}^n \to \mathbb{R}^m \]

の像空間の次元のことを ランク(階数) といい、\(\rank A\)と表す。

\[ \rank A := \dim \Im A = \dim \span\{ \boldsymbol{a}_1, \dots, \boldsymbol{a}_n \} \]

(ただし\(\b{a}_1, \dots, \b{a}_n\)\(A\)の列ベクトル)

さまざまなランクの定義#

\(m\times n\)行列\(A\)に対し、次の1~6の数は一致する

  1. \(A\)が定義する線形写像の像空間\(\im A\)の次元\(\dim \im A = \dim \span \{ \b{a}_1, \dots, \b{a}_n \}\)(ただし\(\b{a}_1, \dots, \b{a}_n\)\(A\)の列ベクトル)

  2. \(A\)の列ベクトルの中から選び得る1次独立なベクトルの最大個数

  3. \(A\)の行ベクトルの中から選び得る1次独立なベクトルの最大個数

  4. \(A\)の行ベクトルが生成する\(\mathbb{R}^n\)の部分空間の次元

  5. \(A\)の0でない小行列式の最大次数

  6. \(A\)を行基本変形で階段行列に変形したときの\(0\)でない行の個数

1次独立なベクトルの最大個数#

例1

\[\begin{split} A = \left(\begin{array}{rrr} 1 & -1 & 0 \\ 0 & 2 & 2 \\ 1 & 3 & 4 \end{array}\right) \end{split}\]

のランクを求めるとする。列ベクトルを

\[ A = \begin{pmatrix} \boldsymbol{a}_1 & \boldsymbol{a}_2 & \boldsymbol{a}_3 \end{pmatrix} \]

とする。

\[ c_1 \boldsymbol{a}_1 + c_2 \boldsymbol{a}_2 = \boldsymbol{0} \]

とすると、第2成分が0になるためには\(c_2 = 0\)である必要がある。

そして\(c_1 \boldsymbol{a}_1 = \boldsymbol{0}\)となるためには、\(c_1 = 0\)である必要がある。

よって\(c_1 = c_2 = 0\)であるため、\(\boldsymbol{a}_1, \boldsymbol{a}_2\)は1️次独立である。

\(\boldsymbol{a}_1 + \boldsymbol{a}_2 = \boldsymbol{a}_3\)であるため、

\[ \span(\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3) = \span(\boldsymbol{a}_1, \boldsymbol{a}_2) \]

であるため、\(\rank A = \dim \span(\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3) = 2\)

例2

\[\begin{split} \left(\begin{array}{rrr} 2 & 0 & -1 \\ 5 & 1 & 1 \\ -1 & 2 & 0 \\ 0 & 1 & 0 \end{array}\right) \end{split}\]

列ベクトルを\(\begin{pmatrix} \boldsymbol{a}_1 & \boldsymbol{a}_2 & \boldsymbol{a}_3 \end{pmatrix}\)とする。

\[ c_1 \boldsymbol{a}_1 + c_2 \boldsymbol{a}_2 + c_3 \boldsymbol{a}_3 = \boldsymbol{0} \]

とすると、第4成分が\(0\)になるためには\(c_2=0\)となり、第3成分をみることにより\(c_1=0\)であり、第2成分を見ることにより\(c_3=0\)であることがわかるから、 \(\boldsymbol{a}_1, \boldsymbol{a}_2, \boldsymbol{a}_3\)は1次独立で、ランクは3となる

小行列式#

\(m\times n\)行列\(A\)があるとし、\(p\)\(p\leq m, p \leq n\)を満たす正の整数とする。\(A\)\(p\)個の行と列を任意に取り出して作った\(p\)次の正方行列の行列式を\(A\)\(p\)次の小行列式 という。

たとえば、

\[\begin{split} A=\left[\begin{array}{llll} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \end{array}\right] \end{split}\]

に対して、\(2\)次の小行列式は

\[\begin{split} \left|\begin{array}{ll} a_{11} & a_{12} \\ a_{21} & a_{22} \end{array}\right|, \quad\left|\begin{array}{ll} a_{11} & a_{13} \\ a_{21} & a_{23} \end{array}\right|, \quad\left|\begin{array}{ll} a_{11} & a_{14} \\ a_{31} & a_{34} \end{array}\right| \end{split}\]

などである。

\(m\times n\)行列の\(p\)次の小行列式は全部で\(_mC_p \times _nC_p\)個存在する。

\(A\)\(r\)次の小行列式の中に\(0\)でないものがあり、\(r+1\)次以上の小行列はすべて\(0\)であるときの\(r\)(0でない小行列式の最大次数)は\(A\)の階数に等しい。

階段行列#

\(m\times n\)行列の第\(i\)行について、第1列から順番に数えて初めて\(0\)でない成分が出てくる列を第\(d_i\)列とする。 ただし、第\(i\)行がすべて0のときは\(d_i = n+1\)と約束する。

\[ d_1 < d_2 < \cdots < d_i < d_{i+1} = \cdots = d_n = n+1 \]

のとき、これを階段行列 (step matrix) という。

図で書くと以下のような行列である

\[\begin{split} \begin{pmatrix} * & \cdots & \cdots & \cdots\\ 0 & * & \cdots & \cdots\\ 0 & 0 & * & \cdots\\ 0 & 0 & 0 & *\\ \end{pmatrix} \end{split}\]

ただし、\(*\)は任意の数。

階段行列の0でない行の個数はその行列のランクに等しい。

階段行列の例

\[\begin{split} \left(\begin{array}{lllll} 0 & 7 & 0 & 3 & 4 \\ 0 & 0 & 1 & 2 & 3 \\ 0 & 0 & 0 & 0 & 0 \end{array}\right) \end{split}\]
\[\begin{split} \begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{pmatrix} \end{split}\]

※単位行列も階段行列である

例:

\[\begin{split} \begin{pmatrix} 3 & 0 & 3\\ 0 & 5 & 0\\ 3 & 0 & 3 \end{pmatrix} \end{split}\]

第1行を\(-1\)倍して第3行に加えると

\[\begin{split} \begin{pmatrix} 3 & 0 & 3\\ 0 & 5 & 0\\ 0 & 0 & 0 \end{pmatrix} \end{split}\]

この階段行列の零でない行ベクトルの数は2なので、ランク(階数)は2

import numpy as np

A = np.array([
    [3, 0, 3],
    [0, 5, 0],
    [3, 0, 3]
])

np.linalg.matrix_rank(A)
2

階数標準形#

行列\(A\)を行基本変形,列基本変形により

\[\begin{split} \begin{pmatrix} I_r & O\\ O & O \end{pmatrix} \end{split}\]

の形に変形できたとき、これを\(A\)階数標準形 あるいは単に 標準形 という。

定理 任意の\(m\times n\)行列\(A\)は基本変形を有限回繰り返して、標準形

\[\begin{split} \begin{pmatrix} I_r & O_{r, n-r}\\ O_{m-r, r} & O_{m-r, n-r} \end{pmatrix} \end{split}\]

に変形することができる。ここで\(r\)\(A\)のランクに等しい。

# 例
import numpy as np

A = np.array([
    [3, 0, 3],
    [0, 5, 0],
    [3, 0, 3]
])

np.linalg.matrix_rank(A)
2
# 1行目を-1倍して3行目に加える
A[2, :] += -1 * A[0, :]
A
array([[3, 0, 3],
       [0, 5, 0],
       [0, 0, 0]])
# 1列目を-1倍して3列目に加える
A[:, 2] += -1 * A[:, 0]
A
array([[3, 0, 0],
       [0, 5, 0],
       [0, 0, 0]])
# (1/3)倍、(1/5)倍して1にする
A[0, 0] = (1/A[0, 0]) * A[0, 0]
A[1, 1] = (1/A[1, 1]) * A[1, 1]
A
array([[1, 0, 0],
       [0, 1, 0],
       [0, 0, 0]])

参考文献#