行列の階数(rank)#
の像空間の次元のことを ランク(階数) といい、
(ただし
さまざまなランクの定義#
が定義する線形写像の像空間 の次元 (ただし は の列ベクトル) の列ベクトルの中から選び得る1次独立なベクトルの最大個数 の行ベクトルの中から選び得る1次独立なベクトルの最大個数 の行ベクトルが生成する の部分空間の次元 の0でない小行列式の最大次数 を行基本変形で階段行列に変形したときの でない行の個数
1次独立なベクトルの最大個数#
例1
のランクを求めるとする。列ベクトルを
とする。
とすると、第2成分が0になるためには
そして
よって
であるため、
例2
列ベクトルを
とすると、第4成分が
小行列式#
たとえば、
に対して、
などである。
階段行列#
のとき、これを階段行列 (step matrix) という。
図で書くと以下のような行列である
ただし、
階段行列の0でない行の個数はその行列のランクに等しい。
階段行列の例
※単位行列も階段行列である
例:
第1行を
この階段行列の零でない行ベクトルの数は2なので、ランク(階数)は2
import numpy as np
A = np.array([
[3, 0, 3],
[0, 5, 0],
[3, 0, 3]
])
np.linalg.matrix_rank(A)
2
階数標準形#
行列
の形に変形できたとき、これを
定理 任意の
に変形することができる。ここで
# 例
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]])
参考文献#
川久保勝夫(2010)『線形代数学 (新装版)』