
[index-ja]

Algebra::JordanForm

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

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

ファイル名:

 ・ jordan-form.rb

スーパークラス:

 ・ Object

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

なし

関連する関数:

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 のジョルダン行列を 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 と同じ。
   
to_matrix_l(ring)
    ジョルダン行列（下三角）を返します。
   

