クラメルの公式

無駄なものは教えない。 全部重要。

[前の記事へ]  [物理数学の目次へ]  [次の記事へ]


必勝パターンは上三角行列

 前回の記事で示したパズルゲームだが、すでに書いたように、本当はこんなものの最速必勝法は読者自身で見つけてもらいたいのである。

 しかし今後の説明に関わることだからゆっくり待ってもいられない。必ず解ける手順を書いてしまおう。いや、もったいぶるほど大したことでもないのだ。

 まず次のような行列からスタートする。

\[ \begin{align*} \left( \begin{array}{lll} A & B & C \\[4pt] D & E & F \\[4pt] G & H & I \end{array} \right) \end{align*} \]
 ここで A の部分が最初から 0 だったりしては話にならないので、その場合は他の行と入れ替えてしまおう。1 行目の全体を A で割れば A の部分を 1 にできるが、そんなことはいつでもできるので後回しだ。まずは D の部分を 0 にしたい。そのためには、1 行目に -D/A を掛けたものを 2 行目に足してやればいい。まぁ、こんな感じになるだろう。
\[ \begin{align*} \left( \begin{array}{lll} A & B & C \\[4pt] 0 & E' & F' \\[4pt] G & H & I \end{array} \right) \end{align*} \]
 あんまり具体的な結果を書いても読みにくいだけなので E' F' などと書いてサボることにした。ここで 2 行目を E' で割れば E' の部分を 1 に出来るけれども、それも後回し。それよりも G の部分を 0 にしたい。1 行目を -G/A 倍したものを 3 行目に足してやればいい。
\[ \begin{align*} \left( \begin{array}{lll} A & B & C \\[4pt] 0 & E' & F' \\[4pt] 0 & H' & I' \end{array} \right) \end{align*} \]
 こんな感じだな。今度は H' のところを 0 にしてやりたい。2 行目に -H'/E' をかけたものを 3 行目に足してやればいいだろう。
\[ \begin{align*} \left( \begin{array}{lll} A & B & C \\[4pt] 0 & E' & F' \\[4pt] 0 & 0 & I'' \end{array} \right) \end{align*} \]
 この形を「上三角行列」と呼ぶ。この形にさえ出来てしまえば勝利は確信できる。2 行目を使って B を 0 にして、3 行目を使って C と F' を 0 にしてしまえば良いだけだからだ。

 この上三角行列を作ることが、今後の話でたびたび重要になってくる。だから他のことには目もくれずにまっすぐこの形を目指したわけだ。この必勝法は今後もたびたび出てくるので、名前を付けておいた方が便利であろう。というか、一般に通用する名前がすでにある。「ガウスの消去法」あるいは「掃き出し法」と呼ばれている。

 私が受けた授業ではいきなり抽象論から入って様々な定理の洪水に圧倒されてしまったのだった。  そのため学期の終わり頃になって「上三角行列を作れ」と言われても、 これまでにどこかで証明したかもしれない何らかの定理を用いた特殊な技法が必要なのだろうと思い込んでしまったのだった。  教科書で「上三角行列を作る方法」なんて項目を探してもこんなものはわざわざ載ってはいないし、 そんな行列を作る動機さえ分からない。  こんな単純なことが分からなくて落ちこぼれてしまったのだった。

 一例だけ示されて「これが上三角行列です」と言われても、それについて正しく理解できたか不安だろう。そこで上三角行列の他の例も示しておこう。ここからパターンを読み取ってみて欲しい。

\[ \begin{align*} \left( \begin{array}{rr} \!\! 12 & 2 \\[4pt] 0 & 6 \\ \end{array} \right) \ \ \ \ \ \ \ \ \left( \begin{array}{rrr} 4 & 9 & 0 \\[4pt] 0 & 7 & 5 \\[4pt] 0 & 0 & \!\!\!-3 \end{array} \right) \ \ \ \ \ \ \ \ \left( \begin{array}{rrrr} 1 & 8 & 6 & 2 \\[4pt] 0 & \!\!\!-2 & 9 & 0 \\[4pt] 0 & 0 & 4 & 6 \\[4pt] 0 & 0 & 0 & 3 \\ \end{array} \right) \end{align*} \]
 判断の微妙なものは無理して区別しなくてもよいと思う。何が本質かは先を読み進むうちに分かるようになるだろう。


用語の解説

 ここで幾つかの用語の説明を入れておこう。

 行列の行と列の数を\( 3 \times 2 \)とか、\( 4 \times 4 \)とか、つまり\( m \times n \)のように表すことがある。この場合、\( m \)が行で\( n \)が列だ。行の方をいつも先に書く習慣がある。まぁ、行列というくらいだしな。行の数と列の数が同じ、つまり真四角の行列を「正方行列」と呼ぶ。\( n \times n \)の正方行列のことを「\( \color{red}{\Vec{n}} \)次の正方行列」と呼ぶ。

 行列の中に書かれている数値、あるいは記号のことを行列の「成分」あるいは「要素」と呼ぶ。例えば、\( i \)行目、\( j \)列目に書かれていればそれは「行列の\( (i,j) \)成分」のように表される。または\( a_{ij} \)のような形で表されることもある。

 正方行列の左上から右下を結ぶ直線上にある成分、つまり\( (i,i) \)成分のことを「対角成分」と呼ぶ。対角成分以外が全て 0 であるような正方行列のことを「対角行列」と呼ぶ。少しだけ例を書いておこう。

\[ \begin{align*} \left( \begin{array}{rr} \!\!\!-3 & 0 \\[4pt] 0 & 2 \\ \end{array} \right) \ \ \ \ \ \ \ \ \left( \begin{array}{rrr} 4 & 0 & 0 \\[4pt] 0 & 1 & 0 \\[4pt] 0 & 0 & 5 \end{array} \right) \ \ \ \ \ \ \ \ \left( \begin{array}{rrrr} 2 & 0 & 0 & 0 \\[4pt] 0 & \!\!\!-2 & 0 & 0 \\[4pt] 0 & 0 & 4 & 0 \\[4pt] 0 & 0 & 0 & 7 \\ \end{array} \right) \end{align*} \]
 対角行列は、上三角行列の特殊な場合だと言えるかもしれない。

 今説明した用語を使えば、先ほどの上三角行列についてもわざわざ例を書き並べずとも正確に伝えることができたようだ。やってみよう。上三角行列とは「\( i>j \)であるような要素\( a_{ij} \)がすべて 0 であるような正方行列」のことである。これでいいはずだ。


連立方程式の解の公式

 このように単純な一定の手続きで解けてしまうと分かってしまったパズルなど、もう何の面白みもない。しかし必ず解ける道があることに気付くのは重要である。

 一定の方法で必ず解にたどり着けるのならば、わざわざ毎回このような手順を取らなくても、一発で解を求めることの出来る公式が見出せるはずだ。こういう作業も読者にやってもらいたい。いや、別にやらなくてもいいんだ。気になる人だけやってみればいい。なぜなら、今からその答えだけをここに書いてしまうことにするからである。気は進まないが、今後の話に繋げるためには仕方ないことなんだよ。

 まず、次のような二元連立一次方程式の場合から。

\[ \begin{align*} a\,x \ +\ b\,y \ &=\ s \\ c\,x \ +\ d\,y \ &=\ t \end{align*} \]
 この解は次のようになる。
\[ \begin{align*} x \ =\ \frac{sd-bt}{ad-bc} \ \ \ \ \ \ ,\ \ \ \ \ y \ =\ \frac{at-sc}{ad-bc} \tag{1} \end{align*} \]
 三元連立の場合。次のような係数を持つ方程式だったとして・・・。
\[ \begin{align*} a\,x \ +\ b\,y \ +\ c\,z\ &=\ s \\ d\,x \ +\ e\,y \ +\ f\,z\ &=\ t \\ g\,x \ +\ h\,y \ +\ i\,z\ &=\ u \end{align*} \]
 この解は次のようになる。
\[ \begin{align*} x \ =\ \frac{sei+bfu+cth-sfh-bti-ceu}{aei+bfg+cdh-afh-bdi-ceg} \\[4pt] y \ =\ \frac{ati+sfg+cdu-afu-sdi-ctg}{aei+bfg+cdh-afh-bdi-ceg} \tag{2} \\[4pt] z \ =\ \frac{aeu+btg+sdh-ath-bdu-seg}{aei+bfg+cdh-afh-bdi-ceg} \end{align*} \]
 四元連立以上についてはもう書きたくないくらい複雑になる。しかし二元や三元の場合と同じようなパターンを持っており、ある意味、単純ではある。それはシンプルな分数の形であって、分母と分子が同じ形。係数が同じ個数だけ掛け合わさって出来た項の和の形になっている。

 実際、具体的数値を扱う場合にはこのような公式を使うよりも、「ガウスの消去法」に従って計算した方が効率が良いくらいなのである。しかし理論的な話などで係数が記号で表されている場合にはこれらの公式を使うより仕方ないわけだ。

 さて、これらの公式には何らかの規則性が見出せそうなのだが、もっと分かり易く表示できないものだろうか。そこで次のような表記を定義する。

\[ \begin{align*} \left| \begin{array}{ll} a & \!\!\!\, b \\ c & \!\!\! d \end{array} \right| \ \equiv \ ad - bc \tag{3} \end{align*} \]
 すると (1) 式は次のように表せて、計算している内容が明確になる。
\[ \begin{align*} x \ =\ \frac{\left| \begin{array}{ll} \color{red}{s} & \!\!\!\, b \\ \color{red}{t} & \!\!\! d \end{array} \right| }{ \left| \begin{array}{ll} a & \!\!\!\, b \\ c & \!\!\! d \end{array} \right| }\ \ \ \ \ \ ,\ \ \ \ \ y \ =\ \frac{\left| \begin{array}{ll} a & \!\!\! \color{red}{s} \\ c & \!\!\! \color{red}{t} \end{array} \right| }{ \left| \begin{array}{ll} a & \!\!\! b \\ c & \!\!\! d \end{array} \right| } \tag{4} \end{align*} \]
 分かりやすいように\( s \)\( t \)に色を付けておこうか。

 同じように次のような表記を定義してやる。

\[ \begin{align*} \left| \begin{array}{rrr} a & \!\!\! b & \!\!\! c \\ d & \!\!\! e & \!\!\! f \\ g & \!\!\! h & \!\!\! i \end{array} \right| \ \equiv \ aei \ +\ bfg \ +\ cdh \ -\ afh \ -\ bdi \ -\ ceg \tag{5} \end{align*} \]
 すると (2) 式も似たような形式になっていることが分かる。
\[ \begin{align*} x \ =\ \frac{\left| \begin{array}{rrr} \color{red}{s} & \!\!\! b & \!\!\! c \\ \color{red}{t} & \!\!\! e & \!\!\! f \\ \color{red}{u} & \!\!\! h & \!\!\! i \end{array} \right| }{ \left| \begin{array}{rrr} a & \!\!\! b & \!\!\! c \\ d & \!\!\! e & \!\!\! f \\ g & \!\!\! h & \!\!\! i \end{array} \right| }\ \ \ \ \ \ ,\ \ \ \ \ y \ =\ \frac{\left| \begin{array}{rrr} a & \!\! \color{red}{s} & \!\!\! c \\ d & \!\!\! \color{red}{t} & \!\!\! f \\ g & \!\!\! \color{red}{u} & \!\!\! i \end{array} \right| }{ \left| \begin{array}{rrr} a & \!\!\! b & \!\!\! c \\ d & \!\!\! e & \!\!\! f \\ g & \!\!\! h & \!\!\! i \end{array} \right| }\ \ \ \ \ \ ,\ \ \ \ \ z \ =\ \frac{\left| \begin{array}{rrr} a & \!\!\! b & \!\!\! \color{red}{s} \\ d & \!\!\! e & \!\!\! \color{red}{t} \\ g & \!\!\! h & \!\!\! \color{red}{u} \end{array} \right| }{ \left| \begin{array}{rrr} a & \!\!\! b & \!\!\! c \\ d & \!\!\! e & \!\!\! f \\ g & \!\!\! h & \!\!\! i \end{array} \right| } \tag{6} \end{align*} \]
 (4) 式や (6) 式を「クラメルの公式」と呼ぶ。ここでは二元や三元の場合について書いただけだが、四元以上になっても同じパターンの公式が成り立つのである。

 そして、(3) 式や (5) 式で定義したものは「行列式」と呼ばれている。行列式という言葉からは数式のようなものを想像してしまうかもしれないが、定義を見ての通り、正方行列に対して定まる単独の数値である。英語では「determinant」。カタカナ読みではデターミナント。「決定因子」というような意味である。どうして「行列式」なんていう訳をあててしまったのかといつも思う。

 なぜ「決定因子」なのかって?もし分母にある行列式の値が 0 だったら、連立一次方程式は唯一つの解を持たないことが分かるだろう。それを見極めるための因子だからだ。

 さあ、次の興味はこの「行列式」の定義の中身である。何か規則性のようなものが見出せるだろうか。それが出来ればもっと簡素化して表すことが可能かもしれない。ここでは 2 次と 3 次の場合の行列式の定義を書いただけだが、それ以上の場合にも通用する定義が作れるだろうか。


行列式の一般的な定義

 行列式の一般的な表現を導くための推理ゲームもいいのだが、ヒントは幾らでも転がっているし、やる気になれば、読者にだって力技で導くことも可能だろう。

 正解に至る道は一つではない。一通り学んだ後では色んな方面からの理由付けが可能になるであろう。そういうことは各自の楽しみに取っておけばいいだろうと思うのだ。(何より今の私には説明手順が行きつ戻りつするのが我慢ならないのである。)

 ここではいきなり\( n \)次の場合の行列式の定義の正解を書いてしまうことにする。

\[ \begin{align*} \left| \begin{array}{llll} a_{11} & a_{12} & \cdots & a_{1n} \\[3pt] a_{21} & a_{22} & \cdots & a_{2n} \\[3pt] \vdots & \vdots & \ddots & \vdots \\[3pt] a_{n1} & a_{n2} & \cdots & a_{nn} \\ \end{array} \!\right| \ =\ \sum_\sigma \big[ \mathrm{sgn}(\sigma) \ a_{1\sigma(1)} \ a_{2\sigma(2)} \cdots a_{n\sigma(n)} \big] \end{align*} \]
 おお、なんとシンプルなんだろう!しかし初学者には意味が分からないに違いない。大丈夫、これから手早く説明する。

 とりあえず\( \mathrm{sgn}(\sigma) \)は無視しよう。\( a_{1\sigma(1)} \ a_{2\sigma(2)} \cdots a_{n\sigma(n)} \)の部分は行列の\( n \)個の要素の積である。この\( n \)個の選び方はこうだ。まず 1 行目から一つ選び、次に 2 行目から一つ選び・・・と続けて\( n \)行目に至る。注意すべきは、すでに選んだ列からは選んではいけないということだ。このとき、どの列から選んだのかを、順序まで正しく覚えておく必要がある。なぜなら、その順序によってその項の符号が決まるからだ。それを計算する部分が\( \mathrm{sgn}(\sigma) \)である。結果は +1 か -1 のいずれかとなる。このようにしてあらゆる組み合わせを考えては、加えるなり、引くなりしていくわけだ。

 では\( \mathrm{sgn}(\sigma) \)の求め方を説明しよう。ちなみに\( \mathrm{sgn} \)というのは、sign(符号) の略である。先ほど説明したように、列の選び方の順序を覚えておくことが大切で、

\[ \begin{align*} \sigma \ =\ ( \sigma(1), \sigma(2), \cdots , \sigma(n) ) \end{align*} \]
のように記録されているわけだ。ここで例えば\( \sigma \) = ( 3, 2, 1 ) だったとしよう。これを ( 1, 2, 3 ) という順序に戻すには、何度入れ替えをすれば良いかというのを考えれば良い。1 と 3 を入れ替えれば済むので、答えは 1 回だ。では、( 3, 1, 2 ) だったらどうか。まず 3 と 1 を入れ替え、次に場所が変わったばかりの 3 と 2 とを入れ替えることで目標の順序に戻るから、答えは 2 回だ。今の例で分かるように、一度に二つの場所の入れ替えをすることしか許されておらず、それを 1 回と数えることにするわけだ。この時、偶数回で正しい並びに戻るなら +1、奇数回なら -1 だというのが\( \mathrm{sgn}(\sigma) \)の意味である。

 正しい並びに戻す手順が手際よかろうが下手だろうが結果は変わらないので安心して構わない。


サラスの方法

 今説明した定義が、先に書いた 2 次の場合と 3 次の場合にちゃんと一致していることは簡単に確認できるだろう。ではこれらを暗記するのは簡単だろうか?2 次の場合は問題なくても、3 次の場合は毎回、定義に従って式を再現するのは面倒くさい。

 実は、3 次の場合だけに使える特別な暗記法があるのだ。それが「サラスの方法」というやつだ。次の図を見て欲しい。

 もう余計な説明は必要ないだろう。もし意味が分からなければ自力で解読してほしい。見た目はごちゃごちゃしているが、分かってしまえば大したことない。簡単に忘れたりはしないと思う。

 先ほどの定義の説明が理解できていれば、この方法を 4 次以上の場合にまで当てはめようとするバカな真似は絶対にしないはずだ。


まとめ

 ここでやったのは、上三角行列の作り方と、クラメルの公式、行列式の紹介。どれもこれから必要になるので、忘れないでいてもらいたい。

 次回は行列式を素早く計算するためのテクニックを披露しよう。それらを駆使することによって連立一次方程式が素早く解けるようになるのだろうか。それとも、やはり「ガウスの消去法」には敵わないのだろうか。