2025.6.4 行列のカーネル
$ A{\bf x}={\bf 0}を満たす$ xの集合をカーネル(核、ゼロ空間)という。
正則行列のカーネルはゼロベクトルのみから構成される。
特異行列のカーネルは
code:kernel01.py
import numpy as np
import scipy as sp
A = np.array(1,2],[2,4)
print('A\n', A)
v, d = np.linalg.eig(A)
print('固有値\n', v)
print('固有ベクトル\n', d)
ker = sp.linalg.null_space(A)
print('カーネル(null_space()の戻り値)\n', ker)
if ker.size != 0:
print('確認\n', A@ker)
try:
print('逆行列\n', sp.linalg.inv(A))
except np.linalg.LinAlgError:
print('Aは特異行列です')
code:結果.py
A
[1 2
2 4]
固有値
0. 5.
固有ベクトル
[-0.89442719 -0.4472136
0.4472136 -0.89442719]
カーネル(null_space()の戻り値)
[-0.89442719
0.4472136 ]
確認
[0.
0.]
Aは特異行列です
Aが特異行列なので、ゼロ固有値を持つ
ゼロ固有値に対応する固有ベクトル向きの値は、全て0に圧縮される。
上の例だと、固有値 0 に対応する固有ベクトルがカーネルとなる。