DOSEIの日記

技術メモ+日常ログ

線型変換の null space の基底

線形変換 A (∈ R^{m×n}) において、 m < n のときその null space (零空間とか呼ばれる) は線型部分空間で、

Null(A) := { x | Ax = 0 }

で定義される。

その基底

んで、この空間の基底を求めるには、 A の特異値分解 (SVD) A = U[]Σ[]V の特異値 0 に対応する右特異ベクトルを計算すればいい。

特異値分解 - Wikipedia

Octave
null(A)

スーパーpre記法(scilab)

手抜き

n = m+1 だとしよう。さらに A には定数倍の自由度があるとしよう。 x の要素のうちどれかひとつを定数にして、連立方程式を解く。その要素が 0 にならないという仮定が必要だけど。

Octave

Ax = 0 の x_n=1 と仮定。

[A(:,1:n-1)\A(:,n); 1]