Changeset 02c3fb in git


Ignore:
Timestamp:
Mar 2, 2010, 7:41:21 PM (13 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
e1cb99e6603e14230e36591822670ccc7436520a
Parents:
de96671c5a8df105dc395a07cd6af4e9df75af2c
Message:
*levandov: more theory and examples inserted

git-svn-id: file:///usr/local/Singular/svn/trunk@12576 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/jacobson.lib

    rde96671 r02c3fb  
    1919@* invertible) square matrices U and V, such that U*M*V=D is a diagonal matrix.
    2020@* Depending on the ring, the diagonal entries of D have certain properties.
     21@*
     22@* We call a square matrix D as before 'a weak Jacobson normal form of M'.
     23@* It is known, that over the first rational Weyl algebra K(x)<d>, D can be further
     24@* transformed into a diagonal matrix (1,1,...,1,f,0,..,0), where f is in K(x)<d>. We call
     25@* such a form of D the strong Jacobson normal form. The existence of strong form
     26@* in not guaranteed if one works with algebra, which is not rational Weyl algebra.
     27
    2128
    2229REFERENCES:
    23 @* (1) N. Jacobson, 'The theory of rings', AMS, 1943.
    24 @* (2) Manuel Avelino Insua Hermo, 'Varias perspectives sobre las bases de Groebner :
     30@* [1] N. Jacobson, 'The theory of rings', AMS, 1943.
     31@* [2] Manuel Avelino Insua Hermo, 'Varias perspectives sobre las bases de Groebner :
    2532@* Forma normal de Smith, Algorithme de Berlekamp y algebras de Leibniz'.
    2633@* PhD thesis, Universidad de Santiago de Compostela, 2005.
    27 
     34@* [3] V. Levandovskyy, K. Schindelar 'Computing Jacobson normal form using Groebner bases',
     35@* to appear in Journal of Symbolic Computation, 2010.
    2836
    2937PROCEDURES:
     
    124132ASSUME: Basering is a commutative polynomial ring in one variable
    125133PURPOSE: compute the Smith Normal Form of M with (optionally) transformation matrices
    126 THEORY: Groebner bases are used for the Smith form like in (2).
     134THEORY: Groebner bases are used for the Smith form like in [2] and [3].
    127135NOTE: By default, just the Smith normal form of M is returned.
    128136@* If the optional integer @code{eng1} is non-zero, the list {U,D,V} is returned
     
    671679ASSUME: Basering is a (non-commutative) ring in two variables.
    672680PURPOSE: compute a weak Jacobson Normal Form of M over the basering
    673 THEORY: Groebner bases and involutions are used, generalizing an idea of (2)
     681THEORY: Groebner bases and involutions are used, following [3]
    674682NOTE: A list L of matrices {U,D,V} is returned. That is L[1]*M*L[3]=L[2], where
    675683@*      L[2] is a diagonal matrix and L[1], L[3] square invertible (unimodular) matrices.
     
    11291137matrix m[3][4] = s,x^2*s,x^3*s,s*x^2,s*x+1,(x+1)^3, (x+s)^2, x*s,x,x^2,x^3,s;
    11301138
     1139// example from the paper:
     1140    ring w = 0,(x,d),Dp;
     1141    def W=nc_algebra(1,1);
     1142    setring W;
     1143    matrix m[2][2]=d^2-1,d+1,d^2+1,d-x;
     1144    list J=jacobson(m,0);
     1145    print(J[1]*m*J[3]);     print(J[2]);     print(J[1]);     print(J[3]);
     1146    print(J[1]*m*J[3]-J[2]);
     1147
     1148    ring w2 = 0,(x,s),Dp;
     1149    def W2=nc_algebra(1,s);
     1150    setring W2;
     1151    poly d = s;
     1152    matrix m[2][2]=d^2-1,d+1,d^2+1,d-x;
     1153    list J=jacobson(m,0);
     1154    print(J[1]*m*J[3]);     print(J[2]);     print(J[1]);     print(J[3]);
     1155    print(J[1]*m*J[3]-J[2]);
     1156// here, both JNFs are cyclic
     1157
     1158// another example from the paper:
     1159    ring w = 0,(x,d),Dp;
     1160    def W=nc_algebra(1,1);
     1161    setring W;
     1162   matrix m[2][2]=-x*d+1, x^2*d, -d, x*d+1;
     1163    list J=jacobson(m,0);
     1164    print(J[1]*m*J[3]);     print(J[2]);     print(J[1]);     print(J[3]);
     1165    print(J[1]*m*J[3]-J[2]);
     1166
     1167    ring w2 = 0,(x,s),Dp;
     1168    def W2=nc_algebra(1,s);
     1169    setring W2;
     1170    poly d = s;
     1171   matrix m[2][2]=-x*d+1, x^2*d, -d, x*d+1;
     1172    list J=jacobson(m,0);
     1173    print(J[1]*m*J[3]);     print(J[2]);     print(J[1]);     print(J[3]);
     1174    print(J[1]*m*J[3]-J[2]);
     1175
    11311176*/
    1132 
Note: See TracChangeset for help on using the changeset viewer.