雑記: 行列式にたどり着きたい話

キャラクターの原作とは関係ありません。何か問題点がありましたらご指摘いただけますと幸いです。
2018-11-08 この文字色の箇所を加筆しました。
f:id:cookie-box:20180305231302p:plain:w60

ジュン、行列式って何?

f:id:cookie-box:20180305231302p:plain:w60

話終わっちゃう!

f:id:cookie-box:20180305232608p:plain:w60

ハヤトは、行列とは何かは大丈夫なんですよね?

f:id:cookie-box:20180305231302p:plain:w60

行列っていうのは…数を並べたやつ?

f:id:cookie-box:20180305232608p:plain:w60

縦に m 個、横に  n 個ずつ長方形に並べたものですね。もっとも、行列式が定義できるのは縦にも横にも同じ個数ずつ並べた正方行列に対してですが。なので以下では正方行列のみ考えましょう。行列の各成分は、ここでは実数と考えておきましょうか(※ 次の吹き出しの例では行列の成分が複素数の場合もあります)。

f:id:cookie-box:20180305231302p:plain:w60

実数を縦に m 個、横に  m 個並べたものってことだな。それで?

f:id:cookie-box:20180305232608p:plain:w60

僕たちは行列で色々な情報を表現することができます。例えば、何年ものと何年ものの国債金利が同じ向きに変動しやすいかの情報や、ある SNS で誰と誰が密にやりとりしているかという情報を行列に表すことができます。また、量子力学のある形式では観測できる物理量を行列で表現します。このように何か情報を行列に表したら、次に僕たちはこう願うでしょう。

  • なるべく少ない変数で、色々な満期の国債金利の値を説明したい。
  • SNS のユーザを、特に密にやり取りしている人たちにグルーピングしたい。
  • ある状態における物理量を取り出したい。
しかし、ふつう用意したままの行列の各成分はこれらの願いを叶えてくれません。そもそも行列ってそのままだと扱いづらいんですよね。掛け算の順序は交換できないし、累乗するのも苦労するし、その他色々計算が大変だし、だからなるべく情報を損なわずに変数の数を削りたいと思っても削り方を示唆してくれないし…。

f:id:cookie-box:20180305231302p:plain:w60

勝手に行列にしておいてめちゃくちゃ文句いうなよ!

f:id:cookie-box:20180305232608p:plain:w60

ただ、行列であっても対角線上の成分を除いて他は全てゼロであるような行列=対角行列ならずっと取り扱いやすくなるんです。なので、できることなら目の前にある行列を対角行列にしたいんです。

f:id:cookie-box:20180305231302p:plain:w60

え? でも勝手に対角成分以外をゼロに書き換えたらダメだろ。情報が変わっちゃう。

f:id:cookie-box:20180305232608p:plain:w60

勝手に対角成分以外をゼロに書き換えるわけではありません。もし  m \times m 行列  A がある条件を満たせば、適当な  m \times m 行列  P を選んで  P^{-1}AP = B を対角行列にすることができるんです。

  • ここで  P^{-1} とは  P逆行列といって、 P P^{-1} = P^{-1}P = I I単位行列)になるような行列です。正方行列  P に対して逆行列  P^{-1} が必ずあるとは限りませんが、あるならただ一つに決まります。

f:id:cookie-box:20180305231302p:plain:w60

ふーん。でもさ、 P^{-1}AP = B はもう  A じゃないじゃん。対角行列になったのはよかったかもしれないけど、なんかもう  A とは別人じゃん。

f:id:cookie-box:20180305232608p:plain:w60

どんな目的でも  B A の代わりにできるとはいってませんよ。いわば  B異世界転生した  A の姿ですが、以下のような場合であれば異世界の方で作業しても差し支えないでしょう。

  • 出したい答えが異世界でも現実世界でも変わらないものである。
  • 出したい答えが異世界と現実世界で異なるものだが、異世界で出した答えを現実世界の姿に変換することができる。

f:id:cookie-box:20180305231302p:plain:w60

異世界転生て。じゃあどうやって転生するんだよその異世界に。

f:id:cookie-box:20180305232608p:plain:w60

どうやって  P を求めるのか、ということですね。 P^{-1}AP が対角行列になるような  P とはどんな行列か、いきなり全ての成分を考えようとするとわかりづらいので、 P の一番左側の列ベクトル  p_1 に着目してみましょう。 P^{-1}p_1 = \displaystyle \left( \begin{array}{c} 1 \\ 0 \\  \vdots \\ 0 \end{array} \right) でなければなりませんよね。 P^{-1} P単位行列ですから、その一番左の列はこうならなければならないです。他方、 P^{-1}Ap_1 = \displaystyle \left( \begin{array}{c} a_1 \\ 0 \\  \vdots \\ 0 \end{array} \right) でなければならないはずです。対角行列  P^{-1}AP の一番左の列ですから。するとこの2つのベクトルは平行なので  P^{-1}Ap_1 = a_1 P^{-1}p_1 = P^{-1} a_1 p_1 となり、この最左辺と最右辺に左から  P^{-1} をかけると結局  Ap_1 = a_1 p_1 となります。つまり  p_1 は、行列  A を左からかけたときに定数倍されるだけで向きが変わらないベクトルなんです。同じ議論が  P の全ての列のベクトルに対して成り立ちます。また、明記してきませんでしたが  P^{-1}AP という表記からわかるように  P逆行列をもつ行列(正則行列)なので、各列ベクトルは互いに線形独立でなければなりません(証明略)。まとめると、 m \times m 行列  A に対して  P^{-1}AP が対角行列となるような  P とは、「行列  A を左からかけたときに向きが変わらないような互いに線形独立なベクトルを  m 本並べたもの」であり、そのような  P が存在するための  A の条件はそのまま「行列  A を左からかけたときに向きが変わらないような互いに線形独立なベクトルが  m 本あること」です。

f:id:cookie-box:20180305231302p:plain:w60

へー、 P はそういう行列だったのか…いやでも、その「行列  A を左からかけたときに向きが変わらないようなベクトル」をどうやって求めるの?

f:id:cookie-box:20180305232608p:plain:w60

 Ap_1 = a_1 p_1 を式変形すると  (a_1 I - A)p_1 = \vec{0} となりますが、いま  p_1 は他の列のベクトルと線形独立であるようなベクトルであってほしいので、 p_1 \neq \vec{0} でなければなりません。いま  p_1 に着目していましたが、後ろの  a_1 I -A についてみてみましょう。いま、 a_1 I -A は、ゼロベクトルでないようなベクトル p_1 に左からかけるとゼロベクトルにしてしまうような行列でなければなりません。言い換えると、もし  a_1 I -A が「ゼロベクトルでないベクトルはゼロベクトルにしない」ような行列だったら、ほしい  p_1 を選ぶことができないんですよね。

f:id:cookie-box:20180305231302p:plain:w60

いってることはわかるけど…ゼロベクトルでないベクトルをゼロベクトルにするって、じゃあ結局  a_1 I -A はどんな行列なの?

f:id:cookie-box:20180305232608p:plain:w60

仮に  a_1 I -A逆行列  (a_1 I -A)^{-1} が存在するとしましょう。これを  (a_1 I - A)p_1 = \vec{0} の左からかけるとどうなります?

f:id:cookie-box:20180305231302p:plain:w60

 p_1 = \vec{0} だな。あれでも、p_1 \neq \vec{0} じゃないとダメなんじゃなかった?

f:id:cookie-box:20180305232608p:plain:w60

はい。つまり、 a_1 I -A には逆行列が存在してはならないんです。なので、行列 A に対して  a_1 I -A逆行列をもたないような a_1 が見つけられるか、という話になりますね。

f:id:cookie-box:20180305231302p:plain:w60

 a_1 I -A には逆行列があっちゃダメなのか…いや大して話簡単になってなくない? 逆行列があっちゃダメだったらそういう  a_1 I -A がわかるかっていうとわかんなくない?

f:id:cookie-box:20180305232608p:plain:w60

ええ、 a_1 I -A の姿はわかりませんね。ならいっそ小さい行列で直接逆行列を求めてみるのはどうでしょうか。逆行列がないとはどういうことか確かめてみましょう。表記が煩わしいので  a_1 I -A = C とおき、各成分を  c_{ij} とでも書くことにして、 C^{-1} の各成分  x_{ij} c_{ij} で表すことを目指しましょう。逆行列のすべての成分を求めるのは大変そうなので、一番左の列ベクトルだけ考えてみましょう。 2 \times 2 行列、 3 \times 3 行列の場合であれば以下を解くということです。右辺は単位行列の一番左の列ですね。

 \displaystyle \begin{pmatrix} c_{11} & c_{12} \\ c_{21} & c_{22} \end{pmatrix} \begin{pmatrix} x_{11} \\ x_{21} \end{pmatrix} = \begin{pmatrix} 1 \\ 0 \end{pmatrix}  \displaystyle \begin{pmatrix} c_{11} & c_{12} & c_{13} \\ c_{21} & c_{22}  & c_{23} \\ c_{31} & c_{32}  & c_{33}\end{pmatrix} \begin{pmatrix} x_{11} \\ x_{21} \\ x_{31} \end{pmatrix} = \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix}
どうでしょうか。未知変数の個数と同じ数連立されている連立方程式になっているので、解くことができそうですよね。どうなりますか?

f:id:cookie-box:20180305231302p:plain:w60

俺が解くの!? …まあ、 2 \times 2 行列の場合は  x_{21}x_{11} の式で表して消せばいいのか。こうなるな。

 \displaystyle x_{11} = \frac{c_{22}}{c_{11}c_{22}-c_{12}c_{21}}\, , \; \; x_{21} = \frac{- c_{21}}{c_{11}c_{22}-c_{12}c_{21}}
 3 \times 3 行列の場合も同じ要領だよな。 x_{31}x_{21}x_{11} の式で表して、さらに  x_{21}x_{11} の式で表せば消していけるはずだ。…何これめんどくさ! ノートめっちゃつかう!
 \displaystyle x_{11} = \frac{c_{22}c_{33} - c_{23}c_{32}}{c_{11}c_{22}c_{33}+c_{12}c_{23}c_{31}+c_{13}c_{32}c_{21}-c_{11}c_{23}c_{32}-c_{12}c_{21}c_{33}-c_{13}c_{31}c_{22}}
 x_{11} はこう!  x_{21} x_{31} はかくのめんどいから略! どうだ!? 計算ミスはプロデューサーにいってくれ!

f:id:cookie-box:20180305232608p:plain:w60

分母がゼロの場合が場合分けされていないので不正解です。

f:id:cookie-box:20180305231302p:plain:w60

えーそんなとこ!?

f:id:cookie-box:20180305232608p:plain:w60

いま逆行列がないとはどういうことか知りたかったんですよ? 逆行列の全ての成分を求めてみればわかりますが、ハヤトがかいたそれらの式の分母がゼロのとき、そのときのみ  C には逆行列が存在しないんです。そうでなければ逆行列は存在します。なぜならそうやって各成分を求めることができるでしょう?

f:id:cookie-box:20180305231302p:plain:w60

あーそういうことか。あ、わかった気がする。 a_1 I -A逆行列をもたないような a_1 を見つけるには、 a_1 I -A の成分を上の分母に代入してそれがゼロになるような  a_1 を見つければいいのか。…って考えるとなんかそうやって計算すれば  a_1 って絶対見つかりそうじゃない? 見つからないときとかあんの?

f:id:cookie-box:20180305232608p:plain:w60

…説明は割愛しますが  a_1 は必ず見つかりますよ(※)。そして、a_1 I -A によってゼロベクトルにされてしまう  p_1 も必ず求まります。どちらかというと問題なのは、「線形独立な  p_1 m 本求まるか」という点の方ですね。…その話は一旦そこで止めておいて、ハヤトはいま  2 \times 2 行列、 3 \times 3 行列と逆行列を求めてみてどうでした? 行列のサイズがより大きくなった場合にも、逆行列の存在の有無を確かめられそうな知見が得られたでしょうか?

a_1、つまり、行列  A固有値複素数の範囲で必ず存在しますが、代数的に解けるかはまた別の話です。a_1 は行列  A の固有方程式といわれる m 次方程式の解になりますが、5次以上の方程式になると代数的に解けない場合がありますので(雑記: 5次以上の方程式に解の公式が存在しない話 - クッキーの日記)。しかし、代数的に解けなくとも何らかの表現で特定することはできるでしょう。そもそも実用場面ではもっぱら数値的に求めることになるとは思います。
f:id:cookie-box:20180305231302p:plain:w60

得られてねーよ!

f:id:cookie-box:20180305232608p:plain:w60

そうですね、確かに地道に逆行列の成分を求めるのは見通しのよい方法ではないかもしれません。別の手順で「目の前の行列が逆行列をもつかどうか確かめる方法」、僕たちの最初の願いに即していうならば「目の前の行列が対角化できるかどうか確かめる方法」を考えた方がよさそうです。計算が簡単になるかどうかはさておき、先ほどの分母にあたる式に統一的な表式があった方が便利ですよね。そこが a_1 を求めるカギですから。

f:id:cookie-box:20180305231302p:plain:w60

俺の苦労なんだったの!?

f:id:cookie-box:20180305232608p:plain:w60

そもそも  2 \times 2 から  3 \times 3 になるだけでも逆行列を求めるのは面倒になりますよね。それも、 3 \times 3逆行列を求めるのに  2 \times 2逆行列を求めたときの知見が活かされていません。そこを順々に活かすような方法を編み出せば、もっと大きなサイズの行列にも対応していける形になると思いませんか?

f:id:cookie-box:20180305231302p:plain:w60

いや、俺はこれ以上サイズの大きな行列には向き合っていきたくないんだけど。

f:id:cookie-box:20180305232608p:plain:w60

よく調べてみると、 3 \times 3 行列の逆行列は、 2 \times 2逆行列を求めたときの成分の分母にあたる部分と関連付けることができるんですよね。実は、 m \times m 行列の逆行列の成分の分母にあたる部分と、その行列の左斜め上に1を置いて上側にはゼロを敷き詰めたような  (m+1) \times (m+1) 行列の逆行列の成分の分母にあたる部分が同じになることが証明できるんです。この、ある行列の「逆行列の成分に分母としてあらわれる部分」には特別な名前が付けられていて、それが「行列式」です。

f:id:cookie-box:20180305231302p:plain:w60

タイトル回収すんのおせーよ!

f:id:cookie-box:20180305232608p:plain:w60

行列式の定義からはじめたくなかったんですよね。自然な流れでどうしてこんな  \sum_{\sigma \in S_m} {\rm sgn}(\sigma) \prod_{i=1}^m c_{i \sigma (i)} 形の行列式に僕たちは向き合わなければならないのかたどり着きたいじゃないですか。でもここから余因子展開をはじめるとなると記事の尺がちょっと。あ、上の行列式の表式の意味は参考文献 2. を参照してください。行列式がどのような意味をもつかも参考文献 2. に記述があります。参考文献 1. にはアニメーションによる直感的なすばらしい説明があります。参考文献 1. の中ほどの「3次の座標変換」というアニメーションに照らし合わせていうならば、 A を対角化したいとき、 a_1 I -A という行列の線形変換はこの赤い平行六面体がぺちゃんこにつぶれている=行列式がゼロ=逆行列をもたない状態でなければならないですね。

つづかない