Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

行列の階数(rank)

Undefined control sequence: \DeclareMathOperator at position 57: …{#1}}
% 演算子の定義
\̲D̲e̲c̲l̲a̲r̲e̲M̲a̲t̲h̲O̲p̲e̲r̲a̲t̲o̲r̲{\im}{ \text{Im…

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

m×nm\times n行列AAに対し、AAが定義する線形写像

A:RnRmA: \mathbb{R}^n \to \mathbb{R}^m

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

Undefined control sequence: \rank at position 1: \̲r̲a̲n̲k̲ ̲A := \dim \Im A…

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

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

さまざまなランクの定義

m×nm\times n行列AAに対し、次の1~6の数は一致する

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

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

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

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

  5. AAの0でない小行列式の最大次数

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

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

例1

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

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

A=(a1a2a3)A = \begin{pmatrix} \boldsymbol{a}_1 & \boldsymbol{a}_2 & \boldsymbol{a}_3 \end{pmatrix}

とする。

c1a1+c2a2=0c_1 \boldsymbol{a}_1 + c_2 \boldsymbol{a}_2 = \boldsymbol{0}

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

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

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

a1+a2=a3\boldsymbol{a}_1 + \boldsymbol{a}_2 = \boldsymbol{a}_3であるため、

Undefined control sequence: \span at position 1: \̲s̲p̲a̲n̲(\boldsymbol{a}…

\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

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

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

c1a1+c2a2+c3a3=0c_1 \boldsymbol{a}_1 + c_2 \boldsymbol{a}_2 + c_3 \boldsymbol{a}_3 = \boldsymbol{0}

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

小行列式

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

たとえば、

A=[a11a12a13a14a21a22a23a24a31a32a33a34]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]

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

a11a12a21a22,a11a13a21a23,a11a14a31a34\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|

などである。

m×nm\times n行列のpp次の小行列式は全部でmCp×nCp_mC_p \times _nC_p個存在する。

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

階段行列

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

d1<d2<<di<di+1==dn=n+1d_1 < d_2 < \cdots < d_i < d_{i+1} = \cdots = d_n = n+1

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

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

(000000)\begin{pmatrix} * & \cdots & \cdots & \cdots\\ 0 & * & \cdots & \cdots\\ 0 & 0 & * & \cdots\\ 0 & 0 & 0 & *\\ \end{pmatrix}

ただし、*は任意の数。

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

階段行列の例

(070340012300000)\left(\begin{array}{lllll} 0 & 7 & 0 & 3 & 4 \\ 0 & 0 & 1 & 2 & 3 \\ 0 & 0 & 0 & 0 & 0 \end{array}\right)
(100010001)\begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{pmatrix}

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

例:

(303050303)\begin{pmatrix} 3 & 0 & 3\\ 0 & 5 & 0\\ 3 & 0 & 3 \end{pmatrix}

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

(303050000)\begin{pmatrix} 3 & 0 & 3\\ 0 & 5 & 0\\ 0 & 0 & 0 \end{pmatrix}

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

import numpy as np

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

np.linalg.matrix_rank(A)
2

階数標準形

行列AAを行基本変形,列基本変形により

(IrOOO)\begin{pmatrix} I_r & O\\ O & O \end{pmatrix}

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

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

(IrOr,nrOmr,rOmr,nr)\begin{pmatrix} I_r & O_{r, n-r}\\ O_{m-r, r} & O_{m-r, n-r} \end{pmatrix}

に変形することができる。ここでrrAAのランクに等しい。

# 例
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]])

参考文献