竜太のテクニカルメモ

物理やへっぽこなゲーム作りについて易しく解説するよ

ユニティちゃんライセンス

このブログはユニティちゃんライセンス条項の元に提供されています

掃き出し法で用いる行基本変形の統一的解釈

前回はかなりぶっ飛んだ議論をしたのでどこが間違いかは指摘できなくても, 「ほんとかなぁ?」と思った方がほとんどだろうと思います.過去に情報を送信する肝は 「もつれを狙い通りに操作すること」にあったので,ここが難しいと思われるかもしれません.でも実はもつれさえ作っておけば一定の条件下でちゃんと過去に情報が送れることが示せます.しかも,その観測の際にもつれが壊れてしまってもよいのです.このことについては近々ご紹介する予定です.

さて,今回はそんな非常識な話ではなく,線形連立方程式を行列で解く際に用いる行基本変形を表す3つの正則行列を統一的に解釈する方法になります.

3つの行基本変形は

  • ある行をゼロ以外の定数倍にする.
  • ある行に別のある行の定数倍を加える.
  • ある行と別のある行を入れ替える.

になります. 上のそれぞれの行基本変形を表す正則行列Pを次にご紹介する1成分だけ1の行列と単位行列の組み合わせで理屈で理解してしまいましょう.

(\alpha ,\beta )成分だけ1の行列を左から掛けるとどうなるか?

まず, (\alpha ,\beta )成分だけ1の行列を何かの関数を用いて表せないか考えてみましょう. 実はこれは簡単で \begin{align} T = (\delta _{i - \alpha\ 0}\delta _{j - \beta\ 0}) \end{align} になります.というのもこのTがゼロ以外の値をとるときは\delta _{i - \alpha\ 0}\delta _{j - \beta\ 0}の両方がゼロでないときだけでそのとき,i = \alpha ,j = \betaが成り立つからです. ゼロでないときの値が1なのは明らかですね.

そこでこの行列をあるm\times n行列 A = (a_{ij})に左側から掛けてどうなるか見てみます. \begin{align} TA &= (\delta _{i - \alpha\ 0}\delta _{j - \beta\ 0})(a_{ij}) \\&= (\sum _{k=1}^m\delta _{i - \alpha\ 0}\delta _{k - \beta\ 0}a_{kj}) \\&= \begin{cases} a_{\beta j}\qquad (i=\alpha , j=j) \\ 0 \qquad (\text{その他}) \end{cases} \end{align} これより,行列T = (\delta _{i - \alpha\ 0}\delta _{j - \beta\ 0})を行列Aに左から掛けると, \alpha行がA\beta行で他が全てゼロの行列が得られます. これが全ての行基本変形の基礎になります. そこでこれから上記三つの行基本変形を表す正則行列PTを用いて求めてみましょう.

\alpha行をc倍する行列

\alpha行の全ての1\leq j\leq m列についてa_{\alpha j}\to ca_{\alpha j}とし他はそのままとすればよいから, \alpha行を\alpha行のc倍に置き換えてその他の行はそのままで良いので, (c\delta _{i - \alpha\ 0}\delta _{j - \alpha\ 0})単位行列E = (\delta _{ij})を加えればよいでしょう. ただし,このままだと\alpha行に単位行列の影響で余分な+1\times a_{\alpha j}の項が足されてしまいますので, 単位行列からその分引かなくてはなりません.以上より求める行基本変形を表す行列は, \begin{align} P = (\delta _{ij} - \delta _{i - \alpha\ 0}\delta _{j - \alpha\ 0} +c\delta _{i - \alpha\ 0}\delta _{j - \alpha\ 0}) = (\delta _{ij} + (c-1)\delta _{i - \alpha\ 0}\delta _{j - \alpha\ 0}) \end{align} となります. なお,c\neq 0より,\det T\neq 0なのでTは対角な正則行列です.

\alpha行に\beta行のc倍を加える行列

\alpha行をA\beta行にする行列は(\delta _{i-\alpha\ 0}\delta _{j-\beta\ 0})でした. 今回は\alpha行に\beta行のc倍を加えるだけで元の\alpha行を打ち消す必要はありませんから, \begin{align} P = (\delta _{ij} + c\delta _{i - \alpha\ 0}\delta _{j - \beta\ 0}) \end{align} になります.なお,このPは対角成分が1の三角行列ですから,全ての固有値が1の正則行列です.

\alpha行と\beta行を入れ替える行列

\alpha行をA\beta行にする行列は(\delta _{i-\alpha\ 0}\delta _{j-\beta\ 0}), \beta行をA\alpha行にする行列は(\delta _{i-\beta\ 0}\delta _{j-\alpha\ 0}), ですのでそれらを足して,それ以外の行はそのままで良いので単位行列を加えればよさそうです. ただし,単位行列(\alpha  ,\alpha )成分と(\beta ,\beta )成分をゼロにしておく必要があります. まとめると \begin{align} P = (\delta _{ij} - \delta _{i-\alpha\ 0}\delta _{j-\alpha\ 0} - \delta _{i-\beta\ 0}\delta _{j-\beta\ 0} + \delta _{i-\alpha\ 0}\delta _{j-\beta\ 0} + \delta _{i-\beta\ 0}\delta _{j-\alpha\ 0}) \end{align} となります. この形よりPは対称行列です.しかも実は正則行列になっています. なぜならこの行列を二回掛けると\alpha行と\beta行を2回入れ替えるだけなので恒等行列となり, PP=Eより逆行列が存在するからです.

この結果が意味するのは何か?

この結果より,三つの行基本変形を行う正則行列の形は別に覚える必要はなく, (\alpha ,\beta)成分だけが1の行列T = \delta _{i-\alpha\ 0}\delta _{j-\beta\ 0}を左から掛けてみてその作用を見てやればいつでも自分で導けるということを表しています. 三つの行基本変形を行う正則行列は別に機械的に暗記する必要がないことが分かっていただけたでしょうか?