|
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.
|