|
D.3.1.16 gauss_row
Procedure from library matrix.lib (see matrix_lib).
- Usage:
- gauss_row(A [,e]); A matrix, e any type
- Return:
- - a matrix B, if called with one argument; B is the complete row-
reduced lower-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 transpose(L[2])*A=transpose(L[1])
with L[1] the row-reduced form of A
and L[2] the transformation matrix.
- Note:
- * This procedure just applies gauss_col to the transposed matrix.
The transformation matrix is obtained by applying lift.
This should be faster than the procedure rowred.
* 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 row-reduced form of A over the rational function field.
Example:
| LIB "matrix.lib";
ring r=(0,a,b),(A,B,C),dp;
matrix m[6][8]=
0, 0, b*B, -A,-4C,2A,0, 0,
2C,-4C,-A,B, 0, B, 3B,AB,
0,a*A, 0, 0, B, 0, 0, 0,
0, 0, 0, 0, 2, 0, 0, 2A,
0, 0, 0, 0, 0, 0, 2b, A,
0, 0, 0, 0, 0, 0, 0, 2a;"";
==>
print(gauss_row(m));"";
==> 0, A, 0, 0, 0,0,0,0,
==> 0, 0, 0, 0, 1,0,0,0,
==> 2*C,-4*C,-A, B, 0,B,0,0,
==> 0, 0, (b)/2*B,-1/2*A,0,A,0,0,
==> 0, 0, 0, 0, 0,0,1,0,
==> 0, 0, 0, 0, 0,0,0,1
==>
ring S=0,x,dp;
matrix A[4][5] = 3, 1,1,-1,2,
13, 8,6,-7,1,
14,10,6,-7,1,
7, 4,3,-3,3;
list L=gauss_row(A,1);
print(L[1]);
==> 1/2,-7/3,-19/6,5/6,
==> 1, 0, 0, 0,
==> 0, 1, 0, 0,
==> 0, 0, 1, 0,
==> 0, 0, 0, 1
print(L[2]);
==> 0, -6, -5, 1,
==> -1/2,2/3, -1/6,-1/6,
==> 1/2, -5/3,-5/6,1/6,
==> 0, 13/3,11/3,-1/3
| See also:
rowred.
|