1章 行列とその応用

§1 行列
行列:matrix 子宮から,motherも同源
:row 漕ぐと同音 :column ラテン語「柱」の意から :type ギリシャ語「押す, 打つ」の意から
零行列:zero matrix 単位行列:unit,identity,Einheit matrix で,U とか I とか E を使うわけだ。
:cross product ラテン語「十字形」の意から 逆行列:inverse matrix
成分:component
零因子:zero divisor,nilfactor の方がわかりやすい
交換可能:commutable
ケーリー・ハミルトンの定理:Cayley-Hamilton theorem Wikiによるとハミルトンの発想をもとにしたケーリーの仕事なので Hamilton-Cayley ともよぶそうだ。
行列式:determinant 決定する トレース:trace trace は何かが通った跡や何かが起こった[あった]ことを示すもの
対角行列:diagonal matrix diaが2つのgonaが角だそうだ



(%i1) solve(a-x=2*(x-b),x);
Result

(%i2) a:matrix([2,-1],[1,-6]);b:matrix([5,-7],[4,3]);
Result

(%i4) (2*b+a)/3;
Result

(%i5) kill(a,b);
Result

(%i6) A:matrix([1,-2],[3,-1]);B:matrix([2,a],[b,4]);
Result

(%i8) A.B=B.A;
Result

(%i9) solve([2-2*b=3*a+2,a-8=-a-4,6-b=b+12,3*a-4=-2*b-4],[a,b]);
Result

「独立でない式は消去されました」

(%i10) kill(A,B);
Result

(%i11) matrix([2,-1],[-7,3])^^(-1);
Result

^^n が行列の n 乗計算,^n は各要素の n 乗計算

(%i12) matrix([2,4],[3,6])^^(-1);
Result

singularは特異,regular(ラテン語「定規の」の意から)の反意語

(%i13) matrix([2,-4],[3,-5])^^(-1).matrix([4,-2],[3,1]);
Result

(%i14) A:matrix([a,b],[c,d]);B:matrix([e,f],[g,h]);
Result

(%i16) (A.B)^^(-1);
Result

(%i17) B^^(-1).A^^(-1);
Result

(%i18) (A.B)^^(-1)-B^^(-1).A^^(-1);
Result

(%i19) ratsimp(%);
Result

(%i20) A:matrix([3,-2],[1,0]);
Result

(%i21) A^^n;
Result

n乗計算もマクロ作りました。

(%i22) load(eigen);
Result

(%i23) eivects(A);
Result

最初のリストが固有値,次のリストがその固有値の重複度,次の2つのリストが固有ベクトル。

(%i24) solve(determinant(A-x*matrix([1,0],[0,1]))=0,x);
Result

(%i25) eivals(A);
Result

(%i26) length(%);
Result

(%i27) P:matrix([1,1],[1,1/2]);
Result

(%i28) (P^^(-1).A.P)^n;
Result

(%i29) P.(P^^(-1).A.P)^n.P^^(-1);
Result

(%i30) kill(A,P);
Result

(%i31) npower(a,b,c,d):=block(
A:matrix([a,b],[c,d]),
if length(eivects(A)[2])=2 then(
l1:eivects(A)[2][1][1],l2:eivects(A)[2][2][1],
P:transpose(matrix(l1,l2)),
return(P.(P^^(-1).A.P)^n.P^^(-1))
)
else
a:eivals(A)[1][1],
return(n*a^(n-1)*A-(n-1)*a^n*matrix([1,0],[0,1]))
)$

固有値が重解となるときも使えるマクロです。

(%i32) npower(0,-1,4,4);
Result

§2 行列の応用
一次変換:linear transformation 逆変換:inverse合成変換:composite
相似変換:similar回転移動:rotation



(%i33) matrix([2,-5],[3,4])^^(-1).matrix([9],[2]);
Result

(%i34) determinant(matrix([a,b],[c,d]))=0;
Result

(%i35) matrix([-4,9],[5,8]).matrix([1,3],[2,-1])^^(-1);
Result

(%i36) matrix([2,-1],[5,-3])^^(-1).matrix([3],[4]);
Result

原点の周りの th°回転のマクロ

(%i37) Rot(th):=matrix([cos(th/180*%pi),-sin(th/180*%pi)],
[sin(th/180*%pi),cos(th/180*%pi)]);

Result

(%i38) Rot(60).matrix([4],[2]);
Result

(%i39) Rot(-60).matrix([4],[2]);
Result

(%i40) Rot(90);
Result

(%i41) matrix([-1,0],[0,1]).matrix([0,1],[1,0]);
Result

最後に一次変換を目で見よう。Maxima にある draw パッケージのベクトル場を変更して作りました。Mathmatica にこの機能があって、これが,Maxima でやりたかったんだ。
上は行列の要素 a,b,c,d と座標の幅 n を入力して,行列で格子点を移動したもの。
下は格子点の移動する方向だけ示したもの。
使い分けるといいと思ったのです。
ぜひ遊んでみて欲しい。
これをやるにあたって,gnuplot のグラフ表示機能に気がついた。
マウスだけでなく,カーソールキで視点変更はできるのはあたりまえとして
表示される四角が黄金比になるようになっているが(西洋人はこれが好きだな,日本人は正方形が好きなんだ)x 座標とy 座標が同じになるには(数字の)7キー,
粗い格子を引いてくれるのは Gキー,
3次元グラフを箱で囲いたいときは Bキー 下のマウスの座標を表す数字がいらない人は Mキーを押すといいのだ。
CTRLキーを押しながらマウスで視点変更をするとちょっと違う。
スペースキーでコマンドが現れる。(使えないけど)
私は上のバーで左クリックして,オプションからクリップボードに貼り付けて使うのが最も多い。
(発見した,gnuplot というのもすごいソフトだ)
lt(a,b,c,d,n):行列の要素を入れて -n から n までの範囲で一次変換の点の移動をベクトルとして表示。
lt-u(a,b,c,d,n):ベクトルが長くて今ひとつに時は,ベクトルの長さをすべて1にして運動だけを見る。

(%i2) lt(a,b,c,d,n):=block(
coord: setify(makelist(k,k,-1*n,n)),
points2d: listify(cartesian_product(coord,coord)),
vf2d(x,y):= vector([x,y],[(a-1)*x+b*y,c*x+(d-1)*y]),
vect2: makelist(vf2d(k[1],k[2]),k,points2d),
apply(draw2d,
      append([head_length=0.1, color=blue],
             vect2))
)$

(%i13) lt-u(a,b,c,d,n):=block(
coord: setify(makelist(k,k,-1*n,n)),
points2d: listify(cartesian_product(coord,coord)),
vf2d(x,y):= vector([x,y],[(a-1)*x+b*y,c*x+(d-1)*y]),
vect2: makelist(vf2d(k[1],k[2]),k,points2d),
apply(draw2d,
      append([head_length=0.1, unit_vectors=true,color=blue],
             vect2))
)$

いくつか,図と固有値をのせよう。
x 軸に対して対称,固有値-1,1固有ベクトル(0,1),(1,0)

原点に関して対称,固有値-1固有ベクトル(1,0),(0,1)
上の単位ベクトル版

直線 y=x に関して対称,固有値-1,1固有ベクトル(1,-1),(1,1)

相似比2の相似変換,固有値2固有ベクトル(1,0),(0,1)
上の単位ベクトル版

原点の周りの45度回転と相似比√2倍の相似変換,固有値1±i,固有ベクトル(1,i),(1,-i)
上の単位ベクトル版

行列式 0 の例,固有値0,1固有ベクトル(1,1/2),(1,-2)
上の単位ベクトル版

ずらしの例,固有値1固有ベクトル(1,0)

上の a=3,b=-1,c=1,d=0 の例,固有値3,1固有値ベクトル(1,-1),(1,-1/2)
上の単位ベクトル版
inserted by FC2 system