MATLAB Function Reference    
pinv

Moore-Penrose 擬似逆行列

表示

定義

Moore-Penrose 擬似逆行列は、つぎの 4 つの条件を満たす A'と同じ次元の行列 B です。

計算は、svd(A) を基にして、tol 以下の特異値はゼロとみなします。

詳細

B = pinv(A) は、A の Moore-Penrose 擬似逆行列を出力します。

B = pinv(A,tol) は、Moore-Penrose 擬似逆行列を出力し、デフォルトの許容誤差 max(size(A))*norm(A)*eps を変更します。

例題

A が正則である場合、pinv(A) inv(A) と同じ結果を出力しますが、時間がかかります。A が正方でないか、正則でない場合、inv(A) は存在しません。このような場合、pinv(A) は完全ではありませんが、inv(A) の特性をもちます。

A が列よりも大きな行をもち、フルランクでなければ、つぎの過多最小二乗問題

は、一意的な解をもちません。無限に存在する解の中の 2 つは、

です。これら 2 つは、norm(x) が他のどの解のノルムよりも小さく、そして、y はゼロでない要素をほとんどもたないということによって区別されます。

たとえば、

によって作成される行列は、rank(A) = 3 となる 8行6列の行列です。

右辺は、b = 260*ones(8,1) とします。

   b =
        260 
        260 
        260 
        260 
        260 
        260 
        260 
        260 

スケールファクタ 260 は、8行8列の魔方陣の和です。8 列すべてを使って、A*x = b に対する1 つの解は、すべて 1 のベクトルになります。6 列までを使っての方程式でも矛盾がなく、そのため解が存在しますが、すべてが 1 ではありません。行列がフルランクでなければ、解は無限に存在します。その中の 2 つは、

   x = pinv(A)*b 
   x =
       1.1538 
       1.4615 
       1.3846 
       1.3846 
       1.4615 
       1.1538 

および

   y = A\b
   y =
       3.0000 
       4.0000 
            0
            0
       1.0000 
            0

です。norm(A*x-b)norm(A*y-b) は、丸め誤差の範囲内であるという意味で、これら2つは、正確な解です。解x は特殊です。なぜなら、

   norm(x) = 3.2817 

は、

   norm(y) = 5.0990 

を含む他の解のノルムよりも小さいからです。一方、非ゼロ成分を3つだけもつということで、解 y は特殊です。

参考

inv, qr, rank, svd


 pie3 plot