Jordan INDEX

JORDAN _ _ _ _ _ _ _ _ _ _ _ _ operator

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

syntax:

jordan(<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: Jordan can 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. See ratjordan for an example.

examples:



 a := mat((1,x),(0,x)); 

       [1  x]
  a := [    ]
       [0  x]



 jordan(a);

  {
   [1  0]
   [    ]
   [0  x]
   ,
   [   1           x       ]
   [-------  --------------]
   [ x - 1     2           ]
   [          x  - 2*x + 1 ]
   [                       ]
   [               1       ]
   [   0        -------    ]
   [             x - 1     ]
   ,
   [x - 1   - x ]
   [            ]
   [  0    x - 1]
   }