FROBENIUS _ _ _ _ _ _ _ _ _ _ _ _ operator
The operator frobenius computes the frobenius normal form F of a matrix (A say). It returns {F,P,P^-1} where P*F*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).
Modular Arithmetic:
Frobeniuscan 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.
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 ]