Main Content

ジョルダン正準形

ジョルダン正準形 (ジョルダン標準形) は、相似変換によって行列を対角型に変換するよう試みた結果として得られます。与えられた行列 A に対し、inv(V)*A*V、より簡潔には J = V\A*V が "できるだけ対角行列に近づく" ような特異ではない行列 V を求めます。ほぼすべての行列に対して、ジョルダン正準形は固有値の対角行列で、変換行列の列はその固有ベクトルです。対称行列または異なる固有値をもつ行列の場合、常にそうなります。複数の固有値をもつ非対称行列には対角型に変換できないものがあります。ジョルダン形式は、その対角要素として固有値をもちますが、上対角要素のいくつかが 0 の代わりに 1 となることがあります。次のステートメントを見てみましょう。

J = jordan(A)

A のジョルダン正準形が計算されます。次のステートメントを見てみましょう。

[V,J] = jordan(A)

は、相似変換行列も出力します。ここで、J = inv(V)*A*V です。V の各列は A の一般化された固有ベクトルです。

ジョルダン形式は変動に非常に敏感です。A 行列のわずかな変動によってジョルダン形式は対角化されます。これは、A を正確に (つまり、丸め誤差などなく) 知らなければならないことを意味し、浮動小数点演算を使った信頼のできるジョルダン形式の計算を非常に困難にしています。このため、浮動小数点数値を使ったジョルダン形式の計算は信頼性が低く、推奨されません。

たとえば、次の例を考えます。

A = sym([12,32,66,116;-25,-76,-164,-294;
         21,66,143,256;-6,-19,-41,-73])
A =
[  12,  32,   66,  116]
[ -25, -76, -164, -294]
[  21,  66,  143,  256]
[  -6, -19,  -41,  -73]

したがって、

[V,J] = jordan(A)

は、以下の結果を出力します。

V =
[  4, -2,   4,  3]
[ -6,  8, -11, -8]
[  4, -7,  10,  7]
[ -1,  2,  -3, -2]
 
J =
[ 1, 1, 0, 0]
[ 0, 1, 0, 0]
[ 0, 0, 2, 1]
[ 0, 0, 0, 2]

isequal を使用して、Jinv(V)*A*V が等しいことを示します。関数 isequal は、入力が等しいことを意味する logical 1 (true) を返します。

isequal(J, inv(V)*A*V)
ans =
  logical
   1

J により、A は、1 つのジョルダン ブロックに関して 1 で重複した固有値を持ち、別のジョルダン ブロックに関しては、2 で重複した固有値を持つことがわかります。行列には 2 つの固有ベクトル V(:,1)V(:,3) のみが含まれます。これらは次の関係を満たします。

A*V(:,1) = 1*V(:,1)
A*V(:,3) = 2*V(:,3)

V の他の 2 つの列は、一般化された 2 次の固有ベクトルになります。これらは次の関係を満たします。

A*V(:,2) = 1*V(:,2) + V(:,1)
A*V(:,4) = 2*V(:,4) + V(:,3)

数学的な記述では、vj = v(:,j) を使うことで V の各列と固有値は、次の関係を満たします。

(Aλ1I)v2=v1

(Aλ2I)v4=v3.