Ohmmarkアニメーションで見る線形代数

Top

行列は写像だ

行列は単なる「数字の表」ではありません。 m×n 行列 A には、n 次元空間から m 次元空間への写像という意味があります。 この写像を観察するアニメーションプログラム(2 次元空間から 2 次元空間の場合)の使い方をまとめます。

このアニメーションプログラムは、 書籍 『プログラミングのための線形代数』のためのコンテンツです。詳しくは書籍を参照してください。

アニメーションプログラムの使い方

※本ファイルを利用したことによる直接あるいは間接的な損害に関して、 著作者およびオーム社はいっさいの責任を負いかねます。利用は利用者個人の責任において行ってください。 また、ソフトウェアの動作・実行環境、操作についての質問には一切お答えすることはできません。
※このページの Flash アニメーションは、 Ming/Ruby を用いて作成したイメージです。 実際のアニメーションは、 mat_anim.rb を用いて確認してください。

やってみよう

指定された 2×2 行列 A に対して、写像 y = A x を図示します。 元の各点 x がこの写像でどこに移るかをアニメーション。

観察ポイント:

こてしらべ:対角行列の観察

■ まずは典型的な対角行列(本書 viii, 40, 66 ページ)

A = 1.50
00.5

コマンド:

ruby mat_anim.rb -s=0 | gnuplot

観察ポイント:

■ 対角成分に0があると……(本書 ix, 41 ページ)

B = 00
00.5

コマンド:

ruby mat_anim.rb -s=1 | gnuplot  

観察ポイント:

■ さらにマイナスまでいくと……(本書 x, 41 ページ)

C = 1.50
0-0.5

コマンド:

ruby mat_anim.rb -s=2 | gnuplot  

観察ポイント:

固有値・固有ベクトルと対角化の観察

■ 対角じゃない一般の行列だと、こんなふうに歪みます(本書 xi, 26, 55, 67, 117, 348 ページ)

D = 1-0.3
-0.70.6

コマンド:

ruby mat_anim.rb -s=3 | gnuplot  

観察ポイント:

■ 固有ベクトルを描くと……(本書 xii, 41, 210, 214 ページ)

D = 1-0.3
-0.70.6

コマンド:

ruby mat_anim.rb -s=4 | gnuplot 

観察ポイント:

■ 固有ベクトルの方向に斜交座標をとると……(本書 xiii, 55, 211 ページ)

D = 1-0.3
-0.70.6

コマンド:

ruby mat_anim.rb -s=5 | gnuplot

観察ポイント:

ランクと正則性の観察

■ 行列によっては、空間がぺちゃんこにつぶされることもあります(本書 xiv, 44, 117 ページ)

E = 0.8-0.6
0.4-0.3

コマンド:

ruby mat_anim.rb -s=6 | gnuplot 

観察ポイント:

■ 固有ベクトルを描くと……(本書 xv, xvi ページ)

E = 0.8-0.6
0.4-0.3

コマンド:

ruby mat_anim.rb -s=7 | gnuplot

観察ポイント:

■ 固有ベクトルの方向に斜行座標をとると……(本書 xvi ページ)

E = 0.8-0.6
0.4-0.3

コマンド:

ruby mat_anim.rb -s=8 | gnuplot 

観察ポイント:

行列式の交代性の観察

■ 行列 D の列を入れ替えると……(本書 xvii ページ)

F = -0.31
0.6-0.7

コマンド:

ruby mat_anim.rb -s=9 | gnuplot

観察ポイント:

もっと自由に試すには

仕組み

gnuplot のコマンドを ruby で生成して標準出力に吐き、 パイプ経由で送りつけてるだけ。 以下のようにすれば動作を垣間見ることができます。

ruby mat_anim.rb -batch