[index-ja]
(ジョルダン行列クラス)
ジョルダン行列を表現するクラスです。
なし
Algebra::MatrixAlgebra#jordan_form
Algebra::MatrixAlgebra#jordan_form_info
::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 のジョルダン行列を jm、m を jm に 変形するために必要な左変形を 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_l(ring)