ドキュメンテーション

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

pinv

シンボリック行列の Moore-Penrose 逆 (疑似逆) 行列

構文

X = pinv(A)

説明

X = pinv(A) は、A の疑似逆行列を返します。疑似逆行列は Moore-Penrose 逆行列とも呼ばれます。

擬似逆行列の計算

次の行列の疑似逆行列を計算します。これらの数値はシンボリック オブジェクトではないため、結果は浮動小数点数となります。

A = [1 1i 3; 1 3 2];
X = pinv(A)
X =
   0.0729 + 0.0312i   0.0417 - 0.0312i
  -0.2187 - 0.0521i   0.3125 + 0.0729i
   0.2917 + 0.0625i   0.0104 - 0.0938i

次に、この行列をシンボリック オブジェクトに変換し、疑似逆行列を計算します。

A = sym([1 1i 3; 1 3 2]);
X = pinv(A)
X =
[   7/96 + 1i/32, 1/24 - 1i/32]
[ - 7/32 - 5i/96, 5/16 + 7i/96]
[   7/24 + 1i/16, 1/96 - 3i/32]

A*X*A = A かつ X*A*X = X であることをチェックします。

isAlways(A*X*A == A)
ans =
  2×3 logical array
     1     1     1
     1     1     1
isAlways(X*A*X == X)
ans =
  3×2 logical array
     1     1
     1     1
     1     1

次に、A*X および X*A がエルミート行列であることを確認します。

isAlways(A*X == (A*X)')
ans =
  2×2 logical array
     1     1
     1     1
isAlways(X*A == (X*A)')
ans =
  3×3 logical array
     1     1     1
     1     1     1
     1     1     1

擬似逆行列の計算

次の行列の疑似逆行列を計算します。

syms a
A = [1 a; -a 1];
X = pinv(A)
X =
[ (a*conj(a) + 1)/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1) -...
(conj(a)*(a - conj(a)))/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1),
- (a - conj(a))/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1) -...
(conj(a)*(a*conj(a) + 1))/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1)]
[ (a - conj(a))/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1) +...
(conj(a)*(a*conj(a) + 1))/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1),
(a*conj(a) + 1)/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1) -...
(conj(a)*(a - conj(a)))/(a^2*conj(a)^2 + a^2 + conj(a)^2 + 1)]

次に、a が実数であると仮定して、A の疑似逆行列を計算します。

assume(a,'real')
A = [1 a; -a 1];
X = pinv(A)
X =
[ 1/(a^2 + 1), -a/(a^2 + 1)]
[ a/(a^2 + 1),  1/(a^2 + 1)]

計算を続けるため、a に設定された仮定を syms を使用して再作成することで削除します。

syms a

入力引数

すべて折りたたむ

入力。シンボリック行列として指定します。

出力引数

すべて折りたたむ

擬似逆行列。A*X*A = A および X*A*X = X となるようにシンボリック行列として返されます。

詳細

すべて折りたたむ

Moore-Penrose 疑似逆行列

m 行 n 列の行列 A の疑似逆行列は、A*X*A = A および X*A*X = X となるような、n 行 m 列の行列 X です。行列 A*X および X*A は、エルミート行列でなければなりません。

ヒント

  • シンボリック オブジェクトではない数値引数について pinv を呼び出すと、MATLAB® 関数 pinv が呼び出されます。

  • 可逆行列 A の場合、A の Moore-Penrose 逆行列 XA の逆行列と一致します。

参考

| | |

R2013a で導入