<A NAME=Frobenius>
<TITLE>Frobenius</TITLE></A>
<b><a href=r37_idx.html>INDEX</a></b><p><p>
<B>FROBENIUS</B> _ _ _ _ _ _ _ _ _ _ _ _ <B>operator</B><P>
<P>
The operator <em>frobenius</em> computes the <em>frobenius</em> normal form F of
a
<A HREF=r37_0345.html>matrix</A> (A say). It returns {F,P,P^-1} where P*F*P^-1 =
A.
<P>
<P>
<P> <H3>
syntax: </H3>
<em>frobenius</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
<A HREF=r37_0634.html>arnum</A> 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).
<P>
<P>
Modular Arithmetic:
<P>
<P>
<em>Frobenius</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. See
<A HREF=r37_0627.html>ratjordan</A> for an example.
<P>
<P>
<P> <H3>
examples: </H3>
<P><PRE><TT>
a := mat((x,x^2),(3,5*x));
[ 2 ]
[x x ]
a := [ ]
[3 5*x]
frobenius(a);
[ 2] [1 x] [ - x ]
{ [0 - 2*x ], [ ], [1 -----] }
[ ] [0 3] [ 3 ]
[1 6*x ] [ ]
[ 1 ]
[0 --- ]
[ 3 ]
load_package arnum;
defpoly sqrt2**2-2;
a := mat((sqrt2,5),(7*sqrt2,sqrt2));
[ sqrt2 5 ]
a := [ ]
[7*sqrt2 sqrt2]
frobenius(a);
[0 35*sqrt2 - 2] [1 sqrt2 ] [ 1 ]
{ [ ], [ ], [1 - --- ] }
[1 2*sqrt2 ] [1 7*sqrt2] [ 7 ]
[ ]
[ 1 ]
[0 ----*sqrt2]
[ 14 ]
</TT></PRE><P>