Home Online Manual
Top
Back: unitmat
Forward: gauss_row
FastBack: Linear algebra
FastForward: linalg_lib
Up: matrix_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document

D.3.1.15 gauss_col

Procedure from library matrix.lib (see matrix_lib).

Usage:
gauss_col(A[,e]); A a matrix, e any type

Return:
- a matrix B, if called with one argument; B is the complete column- reduced upper-triangular normal form of A if A is constant, (resp. as far as this is possible if A is a polynomial matrix; no division by polynomials).
- a list L of two matrices, if called with two arguments; L satisfies L[1] = A * L[2] with L[1] the column-reduced form of A and L[2] the transformation matrix.

Note:
* The procedure just applies interred to A with ordering (C,dp). The transformation matrix is obtained by applying 'lift'. This should be faster than the procedure colred.
* It should only be used with exact coefficient field (there is no pivoting and rounding error treatment).
* Parameters are allowed. Hence, if the entries of A are parameters, B is the column-reduced form of A over the rational function field.

Example:
 
LIB "matrix.lib";
ring r=(0,a,b),(A,B,C),dp;
matrix m[8][6]=
0,    2*C, 0,    0,  0,   0,
0,    -4*C,a*A,  0,  0,   0,
b*B,  -A,  0,    0,  0,   0,
-A,   B,   0,    0,  0,   0,
-4*C, 0,   B,    2,  0,   0,
2*A,  B,   0,    0,  0,   0,
0,    3*B, 0,    0,  2b,  0,
0,    AB,  0,    2*A,A,   2a;"";
==> 
list L=gauss_col(m,1);
print(L[1]);
==> 0,0,2*C, 0,      0,0,
==> A,0,-4*C,0,      0,0,
==> 0,0,-A,  (b)/2*B,0,0,
==> 0,0,B,   -1/2*A, 0,0,
==> 0,1,0,   0,      0,0,
==> 0,0,B,   A,      0,0,
==> 0,0,0,   0,      1,0,
==> 0,0,0,   0,      0,1 
print(L[2]);
==> 0,         0,        0,               1/2,      0,         0,    
==> 0,         0,        1,               0,        0,         0,    
==> 1/(a),     0,        0,               0,        0,         0,    
==> -1/(2a)*B, 1/2,      0,               C,        0,         0,    
==> 0,         0,        -3/(2b)*B,       0,        1/(2b),    0,    
==> 1/(2a2)*AB,-1/(2a)*A,(-2b+3)/(4ab)*AB,-1/(a)*AC,-1/(4ab)*A,1/(2a)
ring S=0,x,(c,dp);
matrix A[5][4] =
3, 1, 1, 1,
13, 8, 6,-7,
14,10, 6,-7,
7, 4, 3,-3,
2, 1, 0, 3;
print(gauss_col(A));
==> 8/9,-5/9,-1/3,7/9,
==> 1,  0,   0,   0,  
==> 0,  1,   0,   0,  
==> 0,  0,   1,   0,  
==> 0,  0,   0,   1   
See also: colred.