Home Online Manual
Top
Back: det_B
Forward: gaussred_pivot
FastBack: matrix_lib
FastForward: Commutative algebra
Up: linalg_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.3.2.11 gaussred

Procedure from library linalg.lib (see linalg_lib).

Usage:
gaussred(A); A any constant matrix

Return:
list Z: Z[1]=P , Z[2]=U , Z[3]=S , Z[4]=rank(A)
gives a row reduced matrix S, a permutation matrix P and a normalized lower triangular matrix U, with P*A=U*S

Note:
This procedure is designed for teaching purposes mainly. The straight forward implementation in the interpreted library is not very efficient (no standard basis computation).

Example:
 
LIB "linalg.lib";
ring r=0,(x),dp;
matrix A[5][4]=1,3,-1,4,2,5,-1,3,1,3,-1,4,0,4,-3,1,-3,1,-5,-2;
print(A);
==> 1, 3,-1,4,
==> 2, 5,-1,3,
==> 1, 3,-1,4,
==> 0, 4,-3,1,
==> -3,1,-5,-2
list Z=gaussred(A);   //construct P,U,S s.t. P*A=U*S
print(Z[1]);          //P
==> 1,0,0,0,0,
==> 0,1,0,0,0,
==> 0,0,0,0,1,
==> 0,0,0,1,0,
==> 0,0,1,0,0 
print(Z[2]);          //U
==> 1, 0,  0,  0,0,
==> 2, 1,  0,  0,0,
==> -3,-10,1,  0,0,
==> 0, -4, 1/2,1,0,
==> 1, 0,  0,  0,1 
print(Z[3]);          //S
==> 1,3, -1,4,  
==> 0,-1,1, -5, 
==> 0,0, 2, -40,
==> 0,0, 0, 1,  
==> 0,0, 0, 0   
print(Z[4]);          //rank
==> 4
print(Z[1]*A);        //P*A
==> 1, 3,-1,4, 
==> 2, 5,-1,3, 
==> -3,1,-5,-2,
==> 0, 4,-3,1, 
==> 1, 3,-1,4  
print(Z[2]*Z[3]);     //U*S
==> 1, 3,-1,4, 
==> 2, 5,-1,3, 
==> -3,1,-5,-2,
==> 0, 4,-3,1, 
==> 1, 3,-1,4