行列

行列についてまとめます。「基礎」と「リスト」の知識を仮定します。

和・差・積・累乗

注意が必要なのは「積」と「累乗」です。

演算子 意味
A + B 行列 A と B の足し算
A - B 行列 A と B の引き算
A.B 行列 A と B のかけ算
A^^n 行列 A の n 乗
A*B 成分ごとのかけ算
A^n 成分ごとの n 乗

注:通常の「*」記号では、対応する成分同士のかけ算になります。 累乗についても同じで、「^」では成分毎の累乗になります。 したがって、通常の線形代数において、これら2つの記号を使用すること は少ないと思われます。

例.

\[A =\begin{pmatrix}1 & 2 \\ 3 & 4\end{pmatrix}, \quad B =\begin{pmatrix}1 & 0 \\ 0 & 1\end{pmatrix} \] とおいて、 \[ A+B, \quad A-B,\quad AB, \quad A^2\] をそれぞれ計算します。

まず、行列を定義します。行列の定義は matrix を用いて、行ごとにリス トを並べます。

A:matrix([1,2],[3,4]);
実行結果. \[A=\begin{pmatrix}1 & 2 \\ 3 & 4\end{pmatrix}\]

これでAを上で定義された行列として扱うことができます。同様にしてBも 定義します。

B:matrix([1,0],[0,1]);

AとBがそれぞれ定義された段階で、次を入力、実行します。

A+B;A-B;A.B;A^^2;

実行結果. \[A+B = \begin{pmatrix}2 & 2\\ 3 & 5\end{pmatrix}\] \[A-B = \begin{pmatrix}0 & 2\\ 3 & 3\end{pmatrix}\] \[AB = \begin{pmatrix}1 & 2\\ 3 & 4\end{pmatrix}\] \[A^2 = \begin{pmatrix}7 & 10\\ 15 & 22\end{pmatrix}\]

行列式・転置・逆行列・階段行列・トレース・固有値・固有ベクトル・ランク

関数 結果
determinant(M) 行列Mの行列式
transpose(M) 行列Mの転置
invert(M) 行列Mの逆行列
echelon(M) 行列Mから作られる階段行列
mattrace(M) 行列Mのトレース
eigenvalues(M) 行列Mの固有値
eigenvectors(M) 行列Mの固有ベクトル
rank(M) 行列Mのランク

注:トレースの利用には、load("nchrpl"); が必要です。 固有値は load(eigen); が必要かもしれません。

行列の構成法

成分ごとに一つ一つ値を入力するのは面倒です。 仕方ない場合も多いですが、便利な構成法も存在します。

関数 結果
ident(n) n次の単位行列
zeromatrix(n,m) n行m列の零行列
genmatrix(f,n,m) 2変数関数fから生成されるn行m列の行列
addcol(M,list) 列の追加
addrow(M,list) 行の追加
ematrix(m, n, x, i, k) m行n列の行列で、i行k列の成分がxで他は0の行列

ここで、すこし難しいのが genmatrix の使用法です。この関数内で使用する 2変数関数fはxとyの関数として \[ \text{$x$ 行 $y$ 列の成分} \] と定義されるものです。

「ラムダ式」 を利用すると便利です。

genmatrix(lambda([x,y],x-y),3,3);
実行結果. \[\begin{pmatrix}0 & -1 & -2\\ 1 & 0 & -1\\ 2 & 1 & 0\end{pmatrix}\]

行列から、成分や行・列を取得する

行列Aの(i,k)成分は

A[i,k];

として取得可能です。

i行の取得は

row(A,i);

とします。

k列の取得は

col(A,k);

とします。

注:インデックスは「1」から始まります。