ゲームプログラムを期待していた方、少々お待ちください。プログラムに付き物の、原因不明でまだ動作できておりません。代わりに、pythonを使った事例を紹介します。
私達の年代では、行列やベクトルに関する授業があまりなかったため、未だにアレルギー反応があります。そうは言っても、有限要素法などに必須アイテムなので、何とかイメージできないだろうかと思っていたところ、良い本を見つけました。「数学ガールの秘密ノート 行列が描くもの」(著者:結城 浩 発行所:SB Creative)です。シリーズもののようです。登場人物との対話をしながら行列を解説していく本で、2日もあれば読めてしまいます。 行列の意味するところを絵で説明していますので、イメージが付き易いですね。今回、pythonのnumpyとmatplotlibを用いて、絵に描いてみました。
資料はこちら → 行列のイメージ
p.1 ベクトル(x,y)の終点と行列(2,0,0,2)を掛けたベクトルの終点を矢印で結ぶプログラムです。x及びyは、-10~10の整数値ですが、図をすっきりさせるため、-10、-5,0,5,10のように5飛びの値で矢印を描いています。「range(-10,11,5)」のコマンドの中で11は10+1のように必ず1足しておきます。この5が5ずつ飛んだ数値にすることを意味します。1の場合は、-10、-9、-8・・・のように1ずつの値をとります。(x,y)が始点で(u,v)が終点になります。(u,v)が行列を掛けた数値ですが、「quiver(x,y,u,v,・・・」のコマンドで矢印を書く際に始点の座標値を差し引いておく必要がありますので、uからxを、vからyに引算しておきます。 下の絵のように、青枠内のベクトル(x,y)に行列(2,0,0,2)を掛けたベクトルの終点は緑枠のように2倍拡がります。したがって、この行列(2,0,0,2)はx及びy方向に2倍拡げる係数を意味していることがわかります。
p.2 行列(2,1,1,3)を掛けた場合は、青枠から緑枠のように平行四辺形のように拡がることがわかります。
p.3 p.1の緑枠のベクトルのA=(2,0,0,2)の逆行列A-1を掛けると元の青枠に戻ることが図からもわかります。
いかがですか? わからない事象は、このように絵に描いてみるとイメージできて理解が深まります。私は、常々可能な限り絵で描くようにしています。