[index-ja]

Algebra::JordanForm

(ジョルダン行列クラス)

ジョルダン行列を表現するクラスです。

ファイル名:

スーパークラス:

インクルードしているモジュール:

なし

関連する関数:

Algebra::MatrixAlgebra#jordan_form
selfのジョルダン標準形を返します。
Algebra::MatrixAlgebra#jordan_form_info
Algebra::JordanForm.decompose(self) と同じです。

クラスメソッド:

::new(array)

JordanForm オブジェクトを返します。array は、 [対角成分, サイズ] を要素とする配列です。行列を得るには メソッド to_matrix を施すことにより、(上三角)ジョルダン 行列が得られます。下三角にするにはto_matrix_lを用います。

例:

j = Algebra::JordanForm.new([[2, 3], [-1, 2]])
j.to_matrix.display #=>
#  2,   1,   0,   0,   0
#  0,   2,   1,   0,   0
#  0,   0,   2,   0,   0
#  0,   0,   0,  -1,   1
#  0,   0,   0,   0,  -1
::construct(elem_divs, facts, field, pfield)
略。
::decompose(m)

行列 m のジョルダン行列を jmmjm に 変形するために必要な左変形を tL、右変形を sR、ジョルダン 分解をするのに必要な最小分解体を field 、最小分解体まで基礎体 を拡大するのに必要な方程式の配列を modulus とするとき、

[jm, tL, sR, field, modulus]

を返します。(tL * sR == 単位行列 です。)

例:

m = Algebra.SquareMatrix(Rational, a.size)[
 [-1, 1, 2, -1],
 [-5, 3, 4, -2],
 [3, -1, 0, 1],
 [5, -2, -2, 0]
]
jf, p, q, field, modulus = Algebra::JordanForm.decompose(m)
jf.display; puts #=>
#  2,   0,   0,   0
#  0,   a,   0,   0
#  0,   0,   b,   0
#  0,   0,   0, -b - a

p modulus #=> [a^3 + 3a - 1, b^2 + ab + a^2 + 3]

print "P =\n"; p.display; puts
print "P^-1 =\n"; q.display; puts

m = m.convert_to(field)
p jf == p * m * q #=> true

メソッド:

to_matrix(ring)

ring 上のジョルダン行列(上三角)を返します。

例:

j = Algebra::JordanForm.new([[2, 3], [-1, 2]])
j.to_matrix(Integer).display #=>
#  2,   1,   0,   0,   0
#  0,   2,   1,   0,   0
#  0,   0,   2,   0,   0
#  0,   0,   0,  -1,   1
#  0,   0,   0,   0,  -1
to_matrix_r(ring)
to_matrix と同じ。
to_matrix_l(ring)
ジョルダン行列(下三角)を返します。