
[index]

Algebra::JordanForm

(Jordan Matrix)

This class expresses the Jordan canonical matrix.

File Name:

  jordan-form.rb

SuperClass:

  Object

Included Modules

none.

Associated Functions:

Algebra::MatrixAlgebra#jordan_form
    Returns the Jordan matrix of self.
   
Algebra::MatrixAlgebra#jordan_form_info
    Same as Algebra::JordanForm.decompose(self).
   

Class Methods:

::new(array)
    Returns a instance of JordanForm. array is the array of the pair of
    [diagonal component, size]. To get the matrix expression, apply to_matrix
    for the upper triaglular matrix or to_matrix_l for the lower.
   
    Exampe:
    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)
    abbreviate.
   
::decompose(m)
    Returns the array:
    [jm, tL, sR, field, modulus]
   
    where jm is the Jordan matrix of m, tL and sR are the left and right
    deformation matrix from m tojm, field is the mimimal decompostion field to
    Jordan decompose and modulus is the polynomials to the algebraic extention.
    (tL * sR == the identity matrix)
   
    Example:
    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
   

Methods:

to_matrix(ring)
    Returns the upper triangular Jordan matrix over ring.
   
    Example:
    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)
    Same as to_matrix.
   
to_matrix_l(ring)
    Returns the lower triangular Jordan matrix over ring.
   

