言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

図形の変換を繰り返す事と行列について。

本人の勉強の為長々と書いているが、言いたい事は最後だけだ。

図形の変換を表す式は、回転を含めて大体こういう形をしている。x, y の座標で表される点が、変換後 p, q になるとして;

 \{ ax + by = p \\ cx + dy = q -- (1) 連立一次方程式

こういうのを連立一時方程式という。イメージとしては、変数が二つの場合は直線を表す式になるので、このような式が二つあると線も二つで、その交点が解になる。同じように変数が三つで式が三つなら平面が三枚重なり合って一つの点が求まるイメージ。具体的に昨日の回転の式と方程式の直線の関係はすごく面白そうな話だが、先に行列をやる。

行列と言うと表みたいな形をしているが、表と思わない方が良いみたい。表計算やデータベースなどの操作では行列の乗算のようにヨコの物をタテに掛け合わせるなんて操作は無いから。行列は単に連立一次方程式の x や y を何度も書くのが面倒なので楽をするためにあると思うべき。

上の式をこう書く事にする。(p, y) はともかく何故 (x, y) をタテに並べて書くのだろうという気もするが、こう言う物らしい。書き方を変えただけなので、計算方法は同じ。

 \begin{pmatrix} a & b \\ c & d \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} p \\ q \end{pmatrix}

さて、特に式が複雑になると、行列のラクさがわかる。例えばこういう状況。ある図形(点の集合)を拡大、回転した後に、また別の拡大、回転を行う。式はこんな風になるだろう。

 \{ a_2(a_1x + b_1y) + b_2(c_1x + d_1y) = p \\ c_2(a_1x + b_1y) + d_2(c_1x + d_1y) = q -- (2) 二組の操作を連続して行う。

こんなの読んでられないが、これを行列の書き方を使うとマシになる。

 \begin{pmatrix} a_2 & b_2 \\ c_2 & d_2 \end{pmatrix} \begin{pmatrix} \begin{pmatrix} a_1 & b_1 \\ c_1 & d_1 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} \end{pmatrix} = \begin{pmatrix} p \\ q \end{pmatrix}

これは、最初に  \begin{pmatrix} x \\ y  \end{pmatrix} に対して  \begin{pmatrix} a_1 & b_1 \\ c_1 & d_1 \end{pmatrix} の操作を行って、次にその答えに対して  \begin{pmatrix} a_2 & b_2 \\ c_2 & d_2 \end{pmatrix} を行うと言う事。これも書き方を変えただけで、意味は(2)の連立方程式と同じなので、地道に計算するしかない。記法を簡単にしても計算は簡単にならない。途中の計算はひどく退屈だが、最終的に

 \{ (a_2a_1 + b_2c_1)x + (a_2b_1 + b_2d_1)y = p \\ (c_2a_1 + d_2d_1)x + (c_2b_1 + d_2d_1)y = q

のようにまとまる。ふとこれを見た人が、

 \begin{pmatrix} a_2 & b_2 \\ c_2 & d_2 \end{pmatrix} \begin{pmatrix} \begin{pmatrix} a_1 & b_1 \\ c_1 & d_1 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} \end{pmatrix} = \begin{pmatrix} a_2 & b_2 \\ c_2 & d_2 \end{pmatrix} \begin{pmatrix} a_1 & b_1 \\ c_1 & d_1 \end{pmatrix}  \begin{pmatrix} x \\ y \end{pmatrix} = \begin{pmatrix} a_2a_1 + b_2c_1 & a_2b_1 + b_2d_1 \\ c_2a_1 + d_2d_1 & c_2b_1 + d_2d_1 \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix}

という事にしてしまえ! と思ったわけだ。これを行列の積という。しかし思うんだけど、

  • これを積というのは無理矢理だ。交換法則が成り立たないものについては別の名前をつけて欲しかった。
  • 最後は書くのが億劫になって説明をはしょったが、本当は最後のカッコをはずすのは抵抗があるはずだ。勝手に結合法則を作ってしまうのだから。
  • 高校で最初に行列の積の定義をして、その応用として連立方程式を教えるのはどうかしている。最初にリンゴやみかんで苦しい行列の例を作るくらいなら、いきなり方程式の方がラクだ。

まあ、今日は単に tex 記法と言うのを使ってみたかっただけの話です。