Frobenius INDEX

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.

syntax:

frobenius(<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).

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.

examples:


 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       ]