Top
Back: 5.1.1 attrib
Forward: 5.1.3 betti
FastBack: 5. Functions and system variables
FastForward: 6. Tricks and pitfalls
Up: 5.1 Functions
Top: Singular 2-0-4 Manual
Contents: Table of Contents
Index: F. Index
About: About This Document

5.1.2 bareiss

Syntax:

bareiss ( module_expression )
bareiss ( matrix_expression )
bareiss ( module_expression, int_expression, int_expression )
bareiss ( matrix_expression, int_expression, int_expression )

Type:

list of module and intvec

Purpose:

applies the sparse Gauss-Bareiss algorithm (see References, Lee and Saunders) to a module (or with type conversion to a matrix) with an ’optimal’ pivot strategy. The vectors of the module are the columns of the matrix, hence elimination takes place w.r.t. rows.
With only one parameter a complete elimination is done. Result is a list: the first entry is a module with a minimal independent set of vectors (as a matrix lower triangular), the second entry an intvec with the permutation of the rows w.r.t. the original matrix, that is, a k at position l indicates that row l became row k.
The further parameters control the algorithm. bareiss(M,i,j) does not consider the last i rows in the elimination procedure and stops computing when the remaining number of vectors (columns) to reduce is at most j.

Example:
 
  ring r=0,(x,y,z),(c,dp);
  module mm;
  // ** generation of the module mm **
  int d=7;
  int b=2;
  int db=d-b;
  int i;
  for(i=d;i>0;i--){ mm[i]=3*x*gen(i); }
  for(i=db;i;i--){ mm[i]=mm[i]+7*y*gen(i+b); }
  for(i=d;i>db;i--){ mm[i]=mm[i]+7*y*gen(i-db); }
  for(i=d;i>b;i--){ mm[i]=mm[i]+11*z*gen(i-b); }
  for(i=b;i;i--){ mm[i]=mm[i]+11*z*gen(i+db); }
  // ** the generating matrix of mm **
  print(mm);
→ 3x, 0,  11z,0,  0,  7y, 0,  
→ 0,  3x, 0,  11z,0,  0,  7y, 
→ 7y, 0,  3x, 0,  11z,0,  0,  
→ 0,  7y, 0,  3x, 0,  11z,0,  
→ 0,  0,  7y, 0,  3x, 0,  11z,
→ 11z,0,  0,  7y, 0,  3x, 0,  
→ 0,  11z,0,  0,  7y, 0,  3x  
  // complete elimination
  list ss=bareiss(mm);
  print(ss[1]);
→ 7y, 0,     0,     0,      0,        0,     0,    
→ 3x, -33xz, 0,     0,      0,        0,     0,    
→ 11z,-121z2,1331z3,0,      0,        0,     0,    
→ 0,  0,     0,     9317yz3,0,        0,     0,    
→ 0,  21xy,  _[5,3],14641z4,-43923xz4,0,     0,    
→ 0,  0,     0,     0,      65219y2z3,_[6,6],0,    
→ 0,  49y2,  _[7,3],3993xz3,_[7,5],   _[7,6],_[7,7]
  ss[2];
→ 2,7,5,1,4,3,6
  // elimination up to 3 vectors
  ss=bareiss(mm,0,3);
  print(ss[1]);
→ 7y, 0,     0,     0,      0,        0,        0,        
→ 3x, -33xz, 0,     0,      0,        0,        0,        
→ 11z,-121z2,1331z3,0,      0,        0,        0,        
→ 0,  0,     0,     9317yz3,0,        0,        0,        
→ 0,  0,     0,     0,      27951xyz3,102487yz4,65219y2z3,
→ 0,  21xy,  _[6,3],14641z4,_[6,5],   _[6,6],   -43923xz4,
→ 0,  49y2,  _[7,3],3993xz3,_[7,5],   _[7,6],   _[7,7]    
  ss[2];
→ 2,7,5,1,3,4,6
  // elimination without the last 3 rows
  ss=bareiss(mm,3,0);
  print(ss[1]);
→ 7y, 0,   0,      0,       0,     0,     0,       
→ 0,  77yz,0,      0,       0,     0,     0,       
→ 0,  0,   231xyz, 0,       0,     0,     0,       
→ 0,  0,   0,      1617xy2z,0,     0,     0,       
→ 11z,21xy,-1331z3,14641z4, _[5,5],_[5,6],_[5,7],  
→ 0,  0,   539y2z, _[6,4],  _[6,5],_[6,6],-3773y3z,
→ 3x, 49y2,-363xz2,3993xz3, _[7,5],_[7,6],_[7,7]   
  ss[2];
→ 2,3,4,1

See det; matrix.


Top Back: 5.1.1 attrib Forward: 5.1.3 betti FastBack: 5. Functions and system variables FastForward: 6. Tricks and pitfalls Up: 5.1 Functions Top: Singular 2-0-4 Manual Contents: Table of Contents Index: F. Index About: About This Document
            User manual for Singular version 2-0-4, October 2002, generated by texi2html.