最適化セミナーのご案内

2.27 ムーア・ペンローズ一般逆行列

 V13から新たに導入されたVector/Matrixクラスの使い方に慣れるため,最適化問題ではありませんが,ムーア・ペンローズ一般逆行列を求めてみましょう.この問題は[8]を参考文献としています.

例題

 次の行列$A$の,ムーア・ペンローズ一般逆行列${A}^{+}$を求めよ.

\[A = \left( \begin{array}{ccc} 1 & -1 & 1 \\ 1 & 1 & -1 \\ -1 & 1 & 1 \\ 1 & 1 & 1 \end{array} \right)\]

 $A$$m \times n$行列とする線型方程式$A\boldsymbol{x} = \boldsymbol{y}$が解$\boldsymbol{x}$を持つような$\boldsymbol{y}$に対して,$\boldsymbol{x} = A^{-} \boldsymbol{y}$がこの方程式の一つの解となる場合,$n \times m$行列$A^{-}$$A$の一般逆行列といいます.

 $A$の一般逆行列は,次の式から求めることができます.

\[AA^{-}A = A\]

 一般的に${A^{-}}$は一意に定まりません.

 行列$M$の任意の一般逆行列を$M^{-}$と表すとき,$A$のムーア・ペンローズ一般逆行列$A^{+}$

\[A^{+} = A^{\rm T} A(A^{\rm T}AA^{\rm T}A)^{-}A^{\rm T}\]

と書くことができ,これは一意に定まります.ここで,$A^{\rm T}$$A$の転置行列です.

 よって,$A^{\rm T}AA^{\rm T}A$に対する一般逆行列を一つ求めればよいことがわかります.

 以上より,次のように定式化できます.

集合
$M$
$N$
 
定数
$A_{m}, m \in M, n \in N$ 定数行列成分
 
変数
$X_{ij}, i \in N, j \in N$ 変数行列成分
 
目的関数
  この問題に目的関数は無い
 
制約条件
$A^{\rm T}AA^{\rm T}AXA^{\rm T}AA^{\rm T}A = A^{\rm T}AA^{\rm T}A$ $X$$A^{\rm T}AA^{\rm T}A$の一般逆行列

 定式化した結果をSIMPLEで記述すると以下のようになります.

Set M, N;
Element m(set = M), i(set = N), j(set = N);

// 定数行列
Matrix A((m,i)), B((i,j));
B = trans(A)*A*trans(A)*A;

// 変数
Variable x(index = (i,j));
Matrix X((i,j));
X[i,j] = x[i,j];// 行列X に変数 x を詰め込む

// 制約条件
B*X*B == B;

// ムーア・ペンローズ一般逆行列
Matrix A_plus((i,m));
A_plus = trans(A)*A*X*trans(A);

solve();

for(int k = 1; k <= N.card(); k++){
  simple_printf("%5.4f ", A_plus[k,m].val);
  simple_printf("\n");
}

 csv形式の入力ファイルは以下のようになります,

A,1,2,3
1,1,-1,1
2,1,1,-1
3,-1,1,1
4,1,1,1

 このモデルをNumerical Optimizerで実行すると,最後に

0.2500 0.2500 -0.2500 0.2500 
-0.2500 0.2500 0.2500 0.2500 
0.2500 -0.2500 0.2500 0.2500

という表示がされて,この例題の答えが

\[A^{+} = \left( \begin{array}{cccc} 1/4 & 1/4 & -1/4 & 1/4 \\ -1/4 & 1/4 & 1/4 & 1/4 \\ 1/4 & -1/4 & 1/4 & 1/4 \end{array} \right)\]

であることがわかります.


 

 

上に戻る