ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

pinv

Moore-Penrose の疑似逆行列

構文

B = pinv(A)
B = pinv(A,tol)

定義

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

A*B*A = A
B*A*B = B
A*B is Hermitian
B*A is Hermitian

計算は、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 が列よりも大きな行をもち、フル ランクでなければ、次の過多最小二乗問題

minimize norm(A*x-b) 

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

x = pinv(A)*b 

および

y = A\b 

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

たとえば、

A = magic(8); A = A(:,1:6) 

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

A =
    64     2     3    61    60     6
     9    55    54    12    13    51
    17    47    46    20    21    43
    40    26    27    37    36    30
    32    34    35    29    28    38
    41    23    22    44    45    19
    49    15    14    52    53    11
     8    58    59     5     4    62 

右辺は、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

の結果

Warning: Rank deficient, rank = 3  tol =   1.8829e-013.
y =
    4.0000
    5.0000
         0
         0
         0
   -1.0000

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

norm(x) = 3.2817 

以下の

norm(y) = 6.4807 

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

参考

| | |

この情報は役に立ちましたか?