<A NAME=Ratjordan>
<TITLE>Ratjordan</TITLE></A>
<b><a href=r37_idx.html>INDEX</a></b><p><p>
<B>RATJORDAN</B> _ _ _ _ _ _ _ _ _ _ _ _ <B>operator</B><P>
<P>
The operator <em>ratjordan</em> computes the rational Jordan normal form R
of a
<A HREF=r37_0345.html>matrix</A> (A say). It returns {R,P,P^-1} where P*R*P^-1 =
A.
<P>
<P>
<P> <H3>
syntax: </H3>
<em>ratjordan</em>(<matrix>)
<P>
<P>
<matrix> :- a square
<A HREF=r37_0345.html>matrix</A>.
<P>
<P>
<P>
Field Extensions:
<P>
<P>
By default, calculations are performed in the rational numbers. To
extend this field the <em>arnum</em> 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
<A HREF=r37_0626.html>frobenius</A> for an example.
<P>
<P>
Modular Arithmetic:
<P>
<P>
<em>ratjordan</em>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.
<P>
<P>
<P> <H3>
examples: </H3>
<P><PRE><TT>
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 ]
</TT></PRE><P>