|
D.3.1.24 colred
Procedure from library matrix.lib (see matrix_lib).
- Usage:
- colred(A[,e]); A matrix, e any type
- Return:
- - a matrix B, being the column reduced form of A, if colred is
called with one argument.
(as far as this is possible over the polynomial ring;
no division by polynomials)
- a list L of two matrices, such that L[1] = A * L[2] with L[1]
the column-reduced form of A and L[2] the transformation matrix
(if colred is called with two arguments).
- Assume:
- The entries of A are in the base field. It is not verified whether
this assumption holds.
- Note:
- * This procedure is designed for teaching purposes mainly.
* It applies rowred to the transposed matrix.
proc gauss_col should be faster.
* It should only be used with exact coefficient field (there is no
pivoting) over the polynomial ring (ordering lp or dp).
* Parameters are allowed. Hence, if the entries of A are parameters
the computation takes place over the field of rational functions.
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;"";
==>
print(colred(m));"";
==> 0,0,0,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,
==> 1,0,0,0, 0, 0,
==> 0,0,0,2*A, B, 0,
==> 0,1,0,0, 0, 0,
==> 0,0,1,0, 0, 0
==>
list L=colred(m,1);
print(L[1]);
==> 0,0,0,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,
==> 1,0,0,0, 0, 0,
==> 0,0,0,2*A, B, 0,
==> 0,1,0,0, 0, 0,
==> 0,0,1,0, 0, 0
print(L[2]);
==> 0, 0, 0, 1, 0, 0,
==> 0, 0, 0, 0, 1, 0,
==> 0, 0, 0, 0, 0, 1,
==> 1/2, 0, 0, 2*C, 0, -1/2*B,
==> 0, 1/(2b), 0, 0, -3/(2b)*B, 0,
==> -1/(2a)*A,-1/(4ab)*A,1/(2a),-2/(a)*AC,(-2b+3)/(4ab)*AB,1/(2a)*AB
| See also:
gauss_col.
|