階数・退化次数の定理
次のような矩形行列
1 列目と 2 列目を加えると 3 列目になるので、3 列目を基底から除きます。
残りの列で行列式をつくると
となるので、この 3 つのベクトルも線形独立ではありません。1 列目と 2 列目が互いに平行でないのは明らかなので基底として採用します (
となります。
次に
次は
行列
基本変形を施して、もう少し簡単な形にします。
3 行目から 2 行目の 2 倍を引くと、3 行目は全部
次に 2 行目から 1 行目を引きます。
したがって、次の 2 式が得られます。
求める
となります。すなわち、
となります。核の次元は
が成り立つことが知られています。核の次元
が成り立ちます。式 (5) より、転置によって行列の階数は変わらないので (
のように書き直すことができます。(1) で定義された行列
となるので、
(5), (13), (15) は部分空間の構造を示す重要な定理なので、以下にまとめておきます。
(1) で定義した行列
# python_rank_nullity_theorem
# In[1]
import numpy as np
from scipy import linalg
# 3×4の行列を定義
A = np.array([[0, 1, 1, 5],
[1, 1, 2, 2],
[2, 2, 4, 4]])
# Aの階数
rank_A = np.linalg.matrix_rank(A)
# Aの核
Ker_A = linalg.null_space(A)
# Aの左零空間
Ker_AT = linalg.null_space(A.T)
# 核の次元(退化次数)
dim_Ker_A = Ker_A.shape[1]
# 左零空間の次元
dim_Ker_AT = Ker_AT.shape[1]
print("階数 : {}".format(rank_A))
print("核の次元 : {}".format(dim_Ker_A))
print("左零空間の次元 : {}".format(dim_Ker_AT))
print("階数 + 核の次元 : {}".format(rank_A+dim_Ker_A))
print("階数 + 左零空間の次元 : {}".format(rank_A+dim_Ker_AT))
# 階数 : 2
# 核の次元 : 2
# 左零空間の次元 : 1
# 階数 + 核の次元 : 4
# 階数 + 左零空間の次元 : 3
コメント
【お知らせ】式番号がずれていたので直しておきました。
下記は誤植と思われるので、ご確認ください。
式 (6) の上の文章で、3 行目は全部消えます → 3 行目は全部 0 になります
式 (11) のベクトルの 2行目で、-x-5w → -z-5w
式 (13) の下の文章で、式 (11) は → 式 (13) は
確かに「消える」という表現は良くないですね。
直しておきました。
お手数をおかけして申し訳ございません。m(_ _)m