Maxima で任意の正方行列を相似変換で Jordan 標準形に変形する

任意の正方行列 M は適当な正則行列 P を用いて相似変換することにより Jordan 標準形 J を得ることができる. Jordan 標準形とは Jordan 細胞を対角成分に並べたもの正方行列である. Jordan 細胞は, 対角成分が任意の値, 対角成分の列番号を 1 のみ増やした成分が存在すれば, その成分が 1, その他の成分が 0 になっている正方行列である. 少し砕けた表現にすると, ジョルダン標準形とは, 対角成分が任意, その隣の列の成分が 1 または 0, その他の成分がすべて 0 の対角行列であるといえる. なお, ジョルダン細胞の次数がすべて 1 の場合は相似変換後の行列の対角成分以外の成分がすべて 0 になる. このとき, 行列は対角化されたという. PMP-1=J (言い換えると, M=P-1JP) が成り立つような正則行列 P が見つかれば, M のべき乗は容易に計算できる.

さて, ジョルダン標準形に相似変換するための正則行列 Pを求めるには, M の固有ベクトルと自由度を求める必要がある. これを手計算で行うのは骨が折れる作業なので, 数式処理ソフトが使えるのならば, それに処理させたい. 筆者は Maxima を使えるので, それを使って処理させてみたい. Maxima にはライブラリが存在する. そのうちの一つ diag の中に必要な関数が組み込まれている. 手順を書くと次のとおりとなる.

  1. load("diag");
  2. M:matrix((snip));
  3. J:jordan(M);
  4. P:ModeMatrix(M,J);

jordan 関数は, 正方行列から Jordan 細胞の構成を表現したリストを得る関数である.

コメントを残す