29.5. 行列の計算
Mathematica では行列の計算もすることができます。この節では、行列に関連する様々な計算のやり方を紹介します。
行列の入力 #
まず行列を入力するには、メニューバーを挿入表・行列新規作成とたどります。

ここの行数と列数を入力して OK ボタンを押すと、行列ができます。たとえば行数と列数をそれぞれ 3 と 4 にして OK ボタンを押すと、次のようにサイズ 3×4 の行列がノートブックに現れます。
よく使われる 2 次正方行列は、基本数学アシスタントのパレットからも入力できます。パレットの「タイプセット」のところをクリックして展開すると、いかにも行列らしいボタンがあるのが分かります。
各セルをクリックすることで数を入力できます。また、成分の入力中に
を押すと右隣のセルに、


行列の計算 #
行列の足し算は数と全く同様にできます。
たとえば次の図のように 2 つの行列の間に + をはさんで


計算結果の見た目が行列の格好をしていませんが、{6, 8} が 1 行目、{10, 12} が 2 行目に対応しています。

Mathematica では F[x] と x // F が同じ意味を持ちます。

見やすいほうが嬉しいので、以下で行列の演算をするときは全て最後に // MatrixForm をつけることにします。
行列のスカラー倍は、行列の前に数を書くだけで計算できます。

行列のかけ算をするには注意が必要です。二つの行列の間に *
を書くと、普通の行列の積ではなく、成分同士のかけ算になってしまいます。


かけ算の記号 *
が成分ごとの積を意味することと対応して、行列の巾乗も成分ごとになってしまいます。


正方行列が正則なときは逆行列が取れます。逆行列は Inverse 関数で計算できます。


転置と対角和(トレース) #
行列の転置を取るには Transpose 関数を使います。
たとえば Transpose[{{a}, {b}}] を入力して



また複素共役転置は ConjugateTranspose 関数を使うと計算できます。

正方行列の対角和(トレース)を計算するには Tr 関数を使います。

勝手な行列 A, B に対し、AB と BA の対角和は一致します。この事実を2次正方行列の場合に確認しましょう。
また転置とトレースを組み合わせれば、行列の各成分の二乗和が求まります。
行列式の計算 #
正方行列の行列式を計算するには Det 関数を使います。Det[] のかっこの中に正方行列を書いて
を押すと、行列式を計算してくれます。
行列の成分は数である必要はなく、文字が入っていても計算できます。たとえば次の例では Vandermonde の行列式を計算しています。

行列式を利用すれば、行列の固有多項式も計算できます。たとえば次の例では、行列 {{0, 0, 1}, {1, 0, 0}, {0, 1, 0}} の固有多項式を計算しています。名前から明らかですが、式中の IdentityMatrix 関数は単位行列を表す関数です。
固有値、固有ベクトルの計算 #
上で Det 関数を用いて固有多項式を計算しましたが、固有多項式は CharacteristicPolynomial 関数でも計算できます。すぐ上の例をもう一度計算してみましょう。



また Eigenvectors 関数を使えば、今度は各固有値ごとに固有ベクトルを得ることができます。ただし出力結果は列ベクトルになっています。
正方行列の Jordan 標準形は JordanDecomposition 関数で計算できます。JordanDecomposition 関数は 2 つの行列を返してきます。たとえば上の例では、次のような行列が得られます。
2 つ目の行列が Jordan 標準形です。1 つ目の行列は、標準形に変形する際に使う行列です。1 つ目に出てきた行列を P とおきます。
\(P^{-1}AP\) を計算すると、えげつない行列が出てきます。

行列の指数関数 #

この巾級数には正方行列を代入することができます (無限和なので各成分が収束するか評価する必要がありますが、実は任意の行列に対して収束することが証明できます)。そこで、この巾級数で行列の指数関数を定義します。
Mathematica で行列の指数関数を計算するには MatrixExp 関数を使います。たとえば行列 {{0, t, 0}, {0, 0, t}, {0, 0, 0}} の指数関数を計算するには次のようにします。
ちなみに、いま MatrixExp を計算した行列は 3 乗すると 0 になります。
よって収束の議論をするまでもなく、指数関数の定義に基づいて計算することが可能です。MatrixExp 関数で計算した結果と一致しますね。
もちろん、巾零行列でなくても指数関数は計算できます。たとえば行列 {{0, -t}, {t, 0}} の指数関数を計算すると回転行列が現れます。
これにより、2 次元の場合に交代行列の Exp が回転行列になることが分かります。大げさに言えば、回転行列のなす Lie 群 SO(2) とその Lie 環 so(2) の対応を見ていることになります。