% 行列の掛け算規則は自然体
\documentclass[a4j]{jsarticle}
\pagestyle{myheadings}
\markright{\sf tmt's math page}
\def\baselinestretch{1.33}
\begin{document}
\section*{◆行列の掛け算規則は自然体◆}
行列の掛け算を知ると、なんでこのような規則になっているのか気になることがあります。規則を知らない人のために、$2$行$2$列の行列どうしの積がどうなるか示しておきましょう。
\[
\left(\matrix{a & b \cr c & d}\right) \left(\matrix{x & y \cr z & u}\right) = \left(\matrix{ax+bz & ay+bu \cr cx+dz & cy+du}\right)
\]
要するに、左側の行$[a,~b]$と右側の列$\left[\matrix{x \cr z}\right]$を使って、$ax+bz$を求めているわけです。この手の計算を$4$回やって行列の積が出来上がります。どうして、横と縦を組み合わせるのでしょうか? もっとも自然な規則を考えるなら
\begin{equation}
\left(\matrix{a & b \cr c & d}\right) \left(\matrix{x & y \cr z & u}\right) = \left(\matrix{ax & by \cr cz & du}\right) \label{wrongDef}
\end{equation}
だと思うのですが。
おそらく様々な背景があるのでしょうが、この規則が決して不自然ではないことを、多少のこじつけを含めて説明してみます。
まず、行列の掛け算の前に、ベクトルの掛け算(内積)について話す必要がありますね。ベクトルは「矢線」で表すことが多いのですが、座標平面では$(1,~-2)$のような数の組で表すこともあります。ここでは、ベクトルについて詳しく語ることはせず、内積と呼ばれる計算だけを取り出して話すことにします。
ところで、ベクトルとベクトルを掛けるってどういうことなんでしょうか。そういった掛け算として考えられるのが、$(1,~-2)*(3,~4) = (1\times3,~-2\times4)$とする方法でしょう。これはこれで、ベクトルどうしの掛け算の定義として成立しています。しかし、この計算の本質は$1\times3 = 3$と$-2\times4 = -8$を並べて書いただけのことなんですね。新規性に欠けるし、わざわざ定義する程のことはないと思われます。行列の掛け算を(\ref{wrongDef})としないのも同じ理由です。
そこで新たに、ベクトルどうしの掛け算---積の記号に``$\cdot$''を用いる「内積」---を
\[
(1,~-2)\cdot(3,~4) = 1\times3 +(-2)\times4 = -5
\]
の計算方法で定義することにしました。要するに、お互いの掛け算の結果を足し合わせることになります。
それがどうした? そもそもこのやり方に何か意味があるの?なんてことを考た人もいるでしょう。ところがこれは、私たちにはけっこう馴染みがある計算方法なんですよ。スーパーマーケットで$150$円の品物を$3$個、$100$円の品物を$4$個、$300$円の品物を$5$個買うことを想像してください。合計はいくらかですか? 正に
\[
(150,~100,~300)\cdot(3,~4,~5) = 150\times3 +100\times4 +300\times5 = 2350
\]
の値を求めているではありませんか。もっとも、この例にはちょっと作意が見えかくれしていますが、必ずしもいまの定義が無意味なものでないことは理解してもらえるでしょう。
さて、掛け算が定義できれば、割り算を定義したくなるのが人の常でしょう。ベクトルどうしの掛け算$(2,~3)\cdot(4,~3) = 2\times4+3\times3 = 17$を例にとって割り算を考えてみます。形式的に書けば$17\div(4,~3) = (2,~3)$とでもなれば割り算の定義となるでしょう。でも、$17\div(4,~3)$をどのようにいじれば $(2,~3)$になるのでしょうか? 第一、$17$と$(4,~3)$では数を同じ土俵に乗せようにもできないのではないでしょうか。これが逆に$(4,~3)\div17$とでもなっていれば、単に$\displaystyle (4,~3)\times\frac{1}{17}$の定数倍に過ぎないので、問題はありません。さすがに$17\div(4,~3)$を求めようとするのは無理がありそうです。
それなら、$(2,~3)\div(4,~3)$の計算をするのはどうでしょう? 数の性質が同じであるため、どうにかなりそうです。そこで、このようなベクトルどうしの割り算が、別のベクトルになると仮定してみます。つまり
\[
\frac{(2,~3)}{(4,~3)} = (x,~y)
\]
ということです。すると、$(2,~3) = (x,~y)\cdot(4,~3)$であろうと思われますが、$(x,~y)\cdot(4,~3)$は内積を意味するので、結果は実数となって左辺のベクトルと異なる数になってしまいます。それでは整合性がとれていません。つまり、ベクトルどうしの割り算がベクトルになるとした仮定は間違っています。
では、ベクトルどうしの割り算は実数になる、と仮定してみたらどうでしょうか。つまり
\[
\frac{(2,~3)}{(4,~3)} = k
\]
ということです。すると、$(2,~3) = k\times(4,~3)$であろうと思われますが、$(4,~3)$をどのように$k$倍しても$(2,~3)$にはなりっこないですね。やっぱり、この仮定も成り立たないことが分かりました。どうも、何をやってもだめなような気になってきました。
果たして、ベクトルどうしに割り算を持ち込むことができるのでしょうか? このことは
\[
\frac{(2,~3)}{(4,~3)} = X
\]
となる$X$を探すことですが、これが成り立つことは$(2,~3) = X*(4,~3)$を満たすことに他なりません。掛け算の記号に``\,*\,''を持ち出したのは、これはもう内積の域に収まらないことが予想されるからです。
形式的にでも$(2,~3) = X*(4,~3)$の形を成立させるには、$X$は$2$組のベクトルでなければならないはずです。そうであれば、$X = ((a,~b),\ (c,~d))$とおいて$(2,~3) = ((a,~b),\ (c,~d))\cdot(4,~3)$とすることで何とかつじつまが合いそうな気がします。でも、残念なことにうまくいきません。
ひとつめの理由は、$((a,~b),\ (c,~d))$を一意的に決めることができない点です。一回の計算で複数の答がでるようでは、計算規則としては失格でしょう。ふたつめの理由は、もっと深刻かもしれません。たとえ、おおらかな気持ちで複数の答を認めても、$(2,~3) = ((a,~b),\ (c,~d))\cdot(4,~3)$が成り立つなら$(2,~3)\div((a,~b),\ (c,~d)) = (4,~3)$だって成り立つだろう、などと言われた日にはもう収拾がつかない騒ぎを引き起こしそうです。ここは潔く、ベクトルどうしの割り算などという無茶な考えは捨てるのがよさそうです。
そこで、思いきって別の考えを取り入れることにしましょう。少し前に戻って、形式的にでも$(2,~3) = X*(4,~3)$の形を成立させるには、$X = ((a,~b),\ (c,~d))$とおいて$(2,~3) = ((a,~b),\ (c,~d))\cdot(4,~3)$とすることで何とかつじつまが合いそうだ、ということを出発点にしてみます。これは、割り算に発展することができなかった関係式ですが、掛け算としては何かしらの意味を持たせられる式だからです。
$(2,~3) = ((a,~b),\ (c,~d))\cdot(4,~3)$のつじつまが合っているというのは、
\[
\left\{
\begin{array}{@{\,}ccccc}
2 & = & (a,~b)\cdot(4,~3) & = & 4a+3b \\
3 & = & (c,~d)\cdot(4,~3) & = & 4c+3d
\end{array}
\right.
\]
という関係が、ベクトルのそれぞれの要素に対して成立しているからです。それなら思いきって、$(2,~3) = ((a,~b),\ (c,~d))\cdot(4,~3)$のような横書きではなく、
\[
\left(\matrix{2 \cr 3}\right) = \left(\matrix{(a,~b) \cr (c,~d)}\right) \cdot \left(\matrix{4 \cr 3}\right)
\]
のような縦書きにすると対応がよく分かるのではないでしょうか。ベクトルとしては、横書きでも縦書きでも、本質は変わりません。横書きのベクトルは「行ベクトル」、縦書きのベクトルは「列ベクトル」と呼ばれます。
結果的に私たちは、ベクトルを縦書きにしたことで、複数の内積を同時に扱える記述を手に入れたようです。この際ですから、$(~)$が入り組んで複雑に見えるところは$(~)$を削って---同時に``\,,\,''を書く意味もなくなるのでそれも削って---複数の内積を同時に扱う式を
\[
\left(\matrix{2 \cr 3}\right) = \left(\matrix{a & b \cr c & d}\right) \left(\matrix{4 \cr 3}\right)
\]
と書くことにしましょう。ここでは削りついでに、内積の記号``\,$\cdot$\,''も気前よくなくしてしまいました。
ずいぶん思いきった省略をした割には、何の問題も生じません。なぜなら、どの位置の数とどの位置の数を掛け、どのように加えるかは明確に分かっているのですから。計算規則は
\def\coreMatrix#1#2#3{
\put(5, 35){\framebox(10,10){#1}}
\put(5, 15){\framebox(10,10){#2}}
\put(20, 30){\makebox(0,0){$\Biggr)$}}
\put(30, 30){\makebox(0,0){$=$}}
\put(40, 30){\makebox(0,0){$\Biggl($}}
\put(45, 35){\framebox(70,10){行ベクトル$A$}}
\put(45, 15){\framebox(70,10){行ベクトル$B$}}
\put(120, 30){\makebox(0,0){$\Biggr)$}}
\put(130, 30){\makebox(0,0){$\Biggl($}}
\put(135, 15){\framebox(10,30){$\matrix{列 \cr #3}$}}
}
\begin{center}
\unitlength=1pt
\begin{picture}(150, 60)
\put(0, 30){\makebox(0,0){$\Biggl($}}
\coreMatrix{$p$}{$q$}{C}
\put(150, 30){\makebox(0,0){$\Biggr)$}}
\end{picture}
\end{center}
に対して、$p = [行ベクトルA]\cdot[列ベクトルC]$および$q = [行ベクトルB]\cdot[列ベクトルC]$です。いずれも内積の計算規則に従います。もし、この規則がきちんと守られるなら、行ベクトルに$A$, $B$を使い、列ベクトルが異なる
\begin{center}
\unitlength=1pt
\begin{picture}(150, 60)
\put(0, 30){\makebox(0,0){$\Biggl($}}
\coreMatrix{$r$}{$s$}{D}
\put(150, 30){\makebox(0,0){$\Biggr)$}}
\end{picture}
\end{center}
に対して、これら$2$つの計算をまとめてしまう
\begin{center}
\unitlength=1pt
\begin{picture}(180, 60)(-15, 0)
\put(-15, 30){\makebox(0,0){$\Biggl($}}
\put(-10, 35){\framebox(10,10){$p$}}
\put(-10, 15){\framebox(10,10){$q$}}
\coreMatrix{$r$}{$s$}{C}
\put(150, 15){\framebox(10,30){$\matrix{列 \cr D}$}}
\put(165, 30){\makebox(0,0){$\Biggr)$}}
\end{picture}
\end{center}
のような書き方さえ可能にしてしまいます。
このように、行ベクトルや列ベクトルを組み合わせて矩形に並べたものが「行列」なのです。つまり、行列をベクトルの内積の複合的記述と見ることで、掛け算の規則が不自然どころか、自然な流れで決められていると考えられるのです。
\end{document}