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.
<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.
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 ]