[logo] Web連載「数学ガールの秘密ノート」
Share

第117回 シーズン12 エピソード7
星空トランスフォーム(前編)

書籍『数学ガールの秘密ノート/行列が描くもの』

この記事は『数学ガールの秘密ノート/行列が描くもの』として書籍化されています。

無料でWeb立ち読み アマゾンで購入

登場人物紹介

:数学が好きな高校生。

テトラちゃんの後輩。好奇心旺盛で根気強い《元気少女》。

ミルカさん:数学が好きな高校生。のクラスメート。長い黒髪の《饒舌才媛》。

リサ:自在にプログラミングを行う無口な女子。赤い髪の《コンピュータ少女》。

双倉図書館

テトラちゃん、それにミルカさんは今日、双倉図書館(ならびくらとしょかん)に集まっている。

リサがプログラミングに関する発表を行うのを見に来たのだ。

発表は無事に終わり、いまはみんなでお茶を飲んでいるところ。

テトラ「リサちゃんの発表、あたしには難しかったみたいです」

リサ「《ちゃん》は不要」

ミルカ「今回は、大半がマニア向けの話だったような」

リサ「全部が」

テトラ「あ、でも、コンピュータグラフィクスの星空はきれいでした! あんなのが作れるってすごいです!」

「確かにきれいだったよね。あそこから星座の話にもってくるのか、という」

リサ「普通」

テトラ「ああいうプログラムって、難しいんでしょうね……」

リサ「基本は簡単」

ミルカ「簡単なものを基本という。大量の行列計算?」

リサ「ライブラリで一発」

テトラ「行列? 行列がプログラムに出てくるんですか?」

「なるほど。座標の計算をすることになるからか」

ミルカ「お茶が済んだら、リサに簡単なデモをしてもらおう。行列計算の基本」

行列計算の基本

僕たちは双倉図書館の一室に移動した。

リサがコンピュータをプロジェクタにつなぐと、 広い壁の中央にグラフ用紙……座標平面が描かれた。

座標平面

リサ「ミルカ氏が解説」

ミルカ「ふむ。まずは、座標平面上に点を打つことにしよう。テトラが点の座標を言う」

テトラ「ど、どこでもいいんですか? それでは、先手のあたしは、点 (2,1) で」

「テトラちゃん……囲碁将棋じゃないんだから」

リサがキーを叩くと、座標平面上に点が映し出される。

(2,1)

「まあ、確かに点 (2,1) だよね」

ミルカx 座標と y 座標が決まれば、点が一つ決まる。 だから、ヴェクタを使って……縦ベクトルを使って (21) と書いてもかまわない」

(2,1) を縦ベクトル (21) と書く

ミルカ「そしてここで適当な行列を決めよう。君が決める」

「え、適当に決めていいの?」

ミルカ「いい。センスが問われるけれど」

「(何のセンスなんだろう)じゃあ、とりあえず簡単なもので……たとえば、 (2002)

ミルカ「その行列 (2002) と、点を表しているこの縦ベクトル (21) との積を計算すれば (42) になる」

テトラ「ちょ、ちょっと待ってください。確認なんですが、 《行列と縦ベクトルの積》というのは、 行列の積と同じような計算をするんですよね。 《掛けて、掛けて、足す》です」

ミルカ「もちろん」

行列と縦ベクトルの積

(abcd)(xy)=(ax+bycx+dy)

行列 (2002) と縦ベクトル (21) の積は (42) になる (2002)(21)=(2×2+0×10×2+2×1)=(42)

テトラ「すみません、話の腰を折ってしまいました」

ミルカ「行列 (2002) と縦ベクトル (21) を掛けて、 縦ベクトル (42) を得た。 もちろんこの縦ベクトル (42) も座標平面上の点 (4,2) と見なせる」

テトラ「そうですね」

ミルカ「こんなふうにも言える。 すなわち、 (2002) という行列は、点 (2,1) を点 (4,2) に移す」

テトラ「移す……」

ミルカ「リサ、矢印出る?」

リサ「当然」

行列 (2002) は、点 (2,1) を点 (4,2) に移す

(2002)(21)=(42)

テトラ「……」

「行列が変われば、点が移る先も変わるよね。 たとえば、 (0110) という行列とか」

リサ「いま出す」

行列 (0110) は、点 (2,1) を点 (1,2) に移す

テトラ「え、ええっと。あ、そうですね。計算すればすぐに出ます」

(0110)(21)=(0×2+1×11×2+0×1)=(12)

テトラ「あ……でも、考えてみれば当たり前です。 だって、点は xy で決まりますよね。 行列と縦ベクトルの積を取ったら、 xy の値は変化します。 それで点が動くというのは当たり前……ですよね?」

ミルカ「その通り。しかし、ここで自然な疑問が浮かんでくる」

テトラ「疑問……」

ミルカ「君が答える」

「それはもちろん……ひとつの行列が与えられたとき、 《この行列は、どんなふうに点を移すのか?》 という疑問だよね」

テトラ「え? でも、それは根気よく計算すればいい話ではないんでしょうか。 行列の積の方法はわかっています。ですから、行列が与えられれば、 点がどこに移されるかはわかりますよね。計算すれば」

リサ「あるいはプログラムで」

「もちろんそうだよ、テトラちゃん。計算すれば具体的にわかる。 でも、行列はその形を見るだけで、どんな変換を行うかわかるんだ。 パターンがあるんだよ」

テトラ「そうなんですか。……変換?」

ミルカ2×2 の行列は座標平面上の点を移す。それを、その行列がおこなう変換という。 正確には《一次変換》あるいは《線型変換》という」

テトラ「はあ……」

ミルカ「さっきは一点だけを移動した。行列がおこなう変換を見るために、 もっとたくさんの点を移してみよう。リサはすぐ出せるかな」

リサ「曖昧な指示」

ミルカ「しかし応えるリサ」

テトラ「きゃああっ! ……失礼しました。びっくりしてしまいました」

「たくさん出たなあ」

ミルカ「多すぎる。象限ごとに点の描き方も変えて」

リサ「仕様変更」

ミルカ「しかし応えるリサ」

「なるほど。一辺が 1 の……いや、一辺が 2 の正方形だね」

テトラ「この点を全部、行列を使って変換するわけですね」

ミルカ「たとえば、 (2002) で変換した後」

行列 (2002) による変換後

ミルカ「矢印でも出せるかな」

リサ「要求過多」

ミルカ「しかし応えるリサ」

行列 (2002) による変換のようす

テトラ「なるほどです! 点がわあっと広がって」

(2002)2I だからね」

テトラ2I ……ということは、 2(1001) ということですね。 ははあ、だから 2 倍に! これもまた《たとえ話》です。 《行列の世界》の (2002) は、《数の世界》の 2 のたとえ話みたいです」

「点が広がる様子は、一般的な点 (x,y) がどこに移動するかを見ればわかりやすいよ。 つまり、縦ベクトル (xy) がどういう縦ベクトルに変換されるか」

行列 (2002) は、点 (x,y) をどこに移動するか

(2002)(xy)=(2×x+0×y0×x+2×y)=(2x2y)

テトラ「わかりました。 x 座標も y 座標も、どちらも 2 倍になっているから、あのようにわあっと広がったわけですね。 むむ……ということはですよ。もしかして、 12I=(120012) を使えば、きゅうっと縮むんでしょうか」

リサ0.5 を使った」

行列 (120012) による変換

テトラ「なるほどです。 2I なら広がって、 12I なら縮んで、そして単位行列 I ならばそのままですね、きっと」

リサ「単位行列」

行列 (1001) による変換

テトラ「パターンという意味が少しわかりました。たとえば、 a という文字を使って、 (a00a) という形をした行列を作れば、ちょうど a 倍だけ広がることになるんですね」

「そうだね。 (a00a) は原点を中心にして拡大する変換になるね。 a>1 なら広がるし、 0<a<1 なら縮むし、 a=0 なら……」

テトラ「ああ、 a=0 なら、 (0000) ですから、原点につぶれてしまいますね!」

「うんうん」

別の行列

ミルカab の行列を試してみよう。 たとえば、 (3002) はどんな変換になるか。リサ?」

リサ「表示開始」

行列 (3002) による変換

テトラ「なるほどです。横方向には 3 倍で、縦方向には 2 倍ですね……」

「数と違うところだね。《方向》によって変えられる」

さらに別の行列

ミルカ「別の行列を試してみよう。 たとえば、そうだな。 (2113) でやってみよう。 リサ、表示はストップ。 テトラ、どんな形が現れると思う?」

クイズ

以下の点を行列 (2113) で変換すると、どんな形が現れるだろうか。

無料で「試し読み」できるのはここまでです。 この続きをお読みになるには「読み放題プラン」へのご参加が必要です。

ひと月500円で「読み放題プラン」へご参加いただきますと、 447本すべての記事が読み放題になりますので、 ぜひ、ご参加ください。


参加済みの方/すぐに参加したい方はこちら

結城浩のメンバーシップで参加 結城浩のpixivFANBOXで参加

(2015年5月15日)

書籍『数学ガールの秘密ノート/行列が描くもの』

この記事は『数学ガールの秘密ノート/行列が描くもの』として書籍化されています。

書籍化にあたっては、加筆修正をたくさん行い、 練習問題や研究問題も追加しました。

どの巻からでも読み始められますので、 ぜひどうぞ!

無料でWeb立ち読み アマゾンで購入

[icon]

結城浩(ゆうき・ひろし) @hyuki


『数学ガール』作者。 結城メルマガWeb連載を毎週書いてます。 文章書きとプログラミングが好きなクリスチャン。2014年日本数学会出版賞受賞。

Twitter note 結城メルマガ Mastodon Bluesky Threads Home