スポンサーリンク
階数・退化次数の定理は、Pythonで確認することができます。
本記事では、Pythonを使用した階数・退化次数の定理の確認方法について、詳しくご説明します。
階数・退化次数の定理
階数・退化次数の定理(rank–nullity theorem)とは、任意の行列\(A\)の階数と退化次数の和は、その行列の列数\(n\)と等しいという定理です。
\(rankA+nulityA=n\)
Pythonを使用して、上記定理を確認してみます。
階数・退化次数の定理の検証
SciPyのscipy.linalgを使用して、上記定理を確認してみます。
#input
import numpy as np
from scipy import linalg
np.random.seed(7)
A = np.random.randint(-9,10,(5,7))
print("行列A:\n{}\n".format(A))
# Aの階数
rank_A = np.linalg.matrix_rank(A)
# Aの核
Ker_A = linalg.null_space(A)
# 退化次数
dim_Ker_A = Ker_A.shape[1]
print("階数 : {}\n".format(rank_A))
print("退化次数 : {}\n".format(dim_Ker_A))
print("階数 + 退化次数 : {}".format(rank_A+dim_Ker_A))
#output
行列A:
[[ 6 -5 -6 -2 5 -1 5]
[ 1 -1 -2 -3 -5 7 -2]
[ 3 -9 2 -3 3 -4 7]
[-9 -7 0 5 -3 -5 5]
[ 0 -6 -6 -1 7 -8 -9]]
階数 : 5
核の次元 : 2
階数 + 核の次元 : 7
定理を検証することができました。
列数が1の行列の場合、以下のようになります。
#input
import numpy as np
from scipy import linalg
np.random.seed(9)
A = np.random.randint(-9,10,(5,1))
print("行列A:\n{}\n".format(A))
# Aの階数
rank_A = np.linalg.matrix_rank(A)
# Aの核
Ker_A = linalg.null_space(A)
# 退化次数
dim_Ker_A = Ker_A.shape[1]
print("階数 : {}\n".format(rank_A))
print("退化次数 : {}\n".format(dim_Ker_A))
print("階数 + 退化次数 : {}".format(rank_A+dim_Ker_A))
#output
行列A:
[[-8]
[-1]
[ 8]
[-8]
[-9]]
階数 : 1
退化次数 : 0
階数 + 退化次数 : 1
まとめ
この記事では、Pythonを使用した、階数・退化次数の定理の確認方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
リンク
統計学基礎を学びたい方向け
リンク
Pythonの統計解析を学びたい方向け
リンク
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!
\まずは無料体験!/
スポンサーリンク