このページについて |
概要:このページでは、数学ソフトMathematicaで線形代数学する方法を解説します。ベクトル,行列演算についての解説です.
親ページ:このページの親ページはMathematicaです。
目次 |
a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
とすれば,aの中にベクトルを格納できます.
a*2
とすれば,ベクトルaを2倍してくれます.
b = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
と定義しておき,
a + b
とかやれば,
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
と返します.
a.b
とすれば,ベクトルの内積
55
が求まりまります.
ベクトルaの長さは,
Sqrt[a.a]
で求めることが出来るし, ベクトルaとベクトルbの距離は,
Sqrt[(a - b).(a - b)]
で求めることが出来ます.
ここでいったん,
Clear[a, b]
で,定義しておいたオブジェクトを消去しておきます.
1次独立(線形独立)か1次従属(線形従属)かを調べることも出来ます. 例えば,
a = {3, 7, 3, 2} b = {2, -4, -1, 4} c = {2, 5, 6, 3}
が1次独立かどうか調べよう.
Solve[{k1*a + k2 *b + k3*c == 0}, {k1, k2, k3}]
の解が(k1,k2,k3)=(0,0,0)のみならば線形独立である.実際に計算してみると,
{{k1 -> 0, k2 -> 0, k3 -> 0}}
となるので,線形独立である.
ふたたび
Clear[a, b, c]
でa,b,cというオブジェクトをクリアしておく.もう一つの例.
a = {2, -5, 2, 4} b = {1, -1, 1, 2} c = {5, 2, -1, 7} d = {4, 1, 4, 8}
と定義し,このベクトルが線形独立かどうか調べよう.
Solve[{k1*a + k2 *b + k3*c + k4*d == 0}, {k1, k2, k3, k4}]
とすれば,(k1,k2,k3,k4)=(0,0,0,0)以外の解が無数にあることが分かるので,線形従属である.
Mathematicaでは,行列はリストのリストとして扱われる.例えば,
A = {{1, 2}, {3, 4}}
などで,行列Aが定義される. 行列形式で表示させたい場合,
MatrixForm[A]
とする.
Dimensions[A]
で行列Aの次元を教えてくれる. 行列の足し算は,ベクトルのそれと基本的に同じ.
5*A
とかすれば5倍してくれる.
B = {{10, 20}, {30, 40}}
と定義しておいて,
A * B
とすれば,それぞれの成分同士を掛け合わせる.
行列の掛け算は,
A.B
とやる.
4次元の単位行列は,
I1 = IdentityMatrix[4]
とすれば作れる.
(1,2,3,4)を対角成分にもち,その他がすべて0の行列は,
DiagonalMatrix[{1, 2, 3, 4, 5}]
で作れる.
転置行列は
Transpose[A]
などとする.
トレースは,
Tr[A]
などとする.
行列式は
Det[A]
とする.
逆行列は
Inverse[A]
とする.
固有値は,
Eigenvalues[A]
固有ベクトルは,
Eigenvectors[A]
で計算する.
ランクは,
MatrixRank[A]
とする.
さきほどの,線形従属だったベクトル
a = {2, -5, 2, 4} b = {1, -1, 1, 2} c = {5, 2, -1, 7} d = {4, 1, 4, 8}
を再度定義しよう.
Amat = {a, b, c, d}
と定義して,Amatのランクを調べると,
MatrixRank[Amat]
とすると,
3
と返ってくる.線形従属なので,ショートランクになっていることが確認された.