Home Online Manual
Back: view
Forward: smith
Up: Singular Manual
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.11.3 jacobson_lib

Algorithms for Smith and Jacobson Normal Form
Kristina Schindelar, Kristina.Schindelar@math.rwth-aachen.de,
Viktor Levandovskyy, levandov@math.rwth-aachen.de

We work over a ring R, that is an Euclidean principal ideal domain. If R is commutative, we suppose R to be a polynomial ring in one variable. If R is non-commutative, we suppose R to have two variables, say x and d. We treat then the basering as the Ore localization of R with respect to the mult. closed set S = K[x] without 0. Thus, we treat basering as principal ideal ring with d a polynomial variable and x an invertible one.
Note, that in computations no division by x will actually happen.

Given a rectangular matrix M over R, one can compute unimodular (that is invertible) square matrices U and V, such that U*M*V=D is a diagonal matrix. Depending on the ring, the diagonal entries of D have certain properties.

We call a square matrix D as before 'a weak Jacobson normal form of M'. It is known, that over the first rational Weyl algebra K(x)<d>, D can be further transformed into a diagonal matrix (1,1,...,1,f,0,..,0), where f is in K(x)<d>. We call such a form of D the strong Jacobson normal form. The existence of strong form in not guaranteed if one works with algebra, which is not rational Weyl algebra.


[1] N. Jacobson, 'The theory of rings', AMS, 1943.
[2] Manuel Avelino Insua Hermo, 'Varias perspectives sobre las bases de Groebner :
Forma normal de Smith, Algorithme de Berlekamp y algebras de Leibniz'.
PhD thesis, Universidad de Santiago de Compostela, 2005.
[3] V. Levandovskyy, K. Schindelar 'Computing Jacobson normal form using Groebner bases',
to appear in Journal of Symbolic Computation, 2010.


D.11.3.1 smith  compute the Smith Normal Form of M over commutative ring
D.11.3.2 jacobson  compute a weak Jacobson Normal Form of M over non-commutative ring
D.11.3.3 divideUnits  create ones out of units in the output of smith or jacobson
See also: control_lib.