Ratjordan INDEX

RATJORDAN _ _ _ _ _ _ _ _ _ _ _ _ operator

The operator ratjordan computes the rational Jordan normal form R of a matrix (A say). It returns {R,P,P^-1} where P*R*P^-1 = A.

syntax:

ratjordan(<matrix>)

<matrix> :- a square matrix.

Field Extensions:

By default, calculations are performed in the rational numbers. To extend this field the arnum package can be used. The package must first be loaded by load_package arnum;. The field can now be extended by using the defpoly command. For example, defpoly sqrt2**2-2; will extend the field to include the square root of 2 (now defined by sqrt2). See frobenius for an example.

Modular Arithmetic:

ratjordancan also be calculated in a modular base. To do this first type on modular;. Then setmod p; (where p is a prime) will set the modular base of calculation to p. By further typing on balanced_mod the answer will appear using a symmetric modular representation.

examples:


 a := mat((5,4*x),(2,x^2));

       [5  4*x]
       [      ]
  a := [    2 ]
       [2  x  ]



 ratjordan(a); 

    [0  x*( - 5*x + 8)]   [1  5]    [        -5 ]  
  { [                 ],  [    ],   [1     -----] }
    [        2        ]   [0  2]    [        2  ]
    [1      x  + 5    ]             [           ]
                                    [        1  ]
                                    [0     -----]
                                    [        2  ]


 on modular; 

 setmod 23; 

 a := mat((12,34),(56,78)); 

       [12  11]
  a := [      ]
       [10  9 ]



 ratjordan(a); 

    [15  0]   [16  8]   [1  21]
  { [     ],  [     ],  [     ]  }
    [0   6]   [19  4]   [1  4 ]



 on balanced_mod;

 ratjordan(a);

    [- 8  0]   [ - 7  8]   [1  - 2]
  { [      ],  [       ],  [      ]  }
    [ 0   6]   [ - 4  4]   [1   4 ]