The following is the help file for RowEchelon. It is accessible in Maple on issuing the commands
>with(share): >readlib(Echelon): >?RowEchelonTo write a help file for a Maple procedure or package, follow the format below, Then if you are using a Unix system you may use the `helptomaple' script (available from the share library) to convert your text into a Maple
TEXT object. If not, you can use any good
editor to wrap each line of your file in left quotes `
and put a comma at the end. Finally, assign this sequence
of strings to the appropriate help object as follows.
`help/text/RowEchelon` := TEXT( `FUNCTION: RowEchelon - compute the Row Echelon Decomposition of a matrix`, ` `, `CALLING SEQUENCES: R := RowEchelon(A,'dt'); or`,most of the help file omitted
`> dt;`, ` 4 `, ` ` ):The actual help file for
RowEchelon, minus the quotes and
commas, follows.
FUNCTION: RowEchelon - compute the Row Echelon Decomposition of a matrix
CALLING SEQUENCES: R := RowEchelon(A,'dt'); or
R := RowEchelon(A,'dt','rank','P','L','U');
x := RowEchelonSolve(A,b,'dt');
(this solves the linear system Ax = b)
PARAMETERS: A - input rectangular matrix with possibly symbolic entries
dt - variable name for output of det(U)
rank - optional variable name for the rank on output
P, L, U - optional names for the other factors
SYNOPSIS:
- This routine computes the factorization A = P L U R where
P is a permutation matrix, L is unit lower triangular,
U is upper triangular, and R is the unique Row Echelon
form of the matrix A.
- The Row Echelon Form that is returned is correct if U is
nonsingular. If A has parameters in its entries, and for some
values of the parameters det(U) = 0, then the Row Echelon form
must be recomputed for these values of the parameters.
- infolevel[RowEchelon] := 1, 2, or 5 gives descriptive information
on the progress of the computation. 5 may cause matrices to be output
and may result in excessive printing.
- This routine uses the environment variable Normalizer for
problems with coefficients in special domains. For example, if
the matrix A contains complex numbers, one sets
Normalizer := evalc;
prior to calling RowEchelon. For algebraic numbers, use of
evala@Normal or normal@simplify instead of evalc is recommended.
Use of an incorrect normalizer for the domain in question may result
in erroneous results or excessive computation time.
REFERENCE: The Row Echelon Decomposition of a Matrix,
by Robert M. Corless, David Jeffrey, and M. A. H. Nerenberg
SEE ALSO: linalg[hermite], linalg[gaussjord], linalg[smith], and
linalg[ismith].
EXAMPLES:
> A := array(1..3,1..4,[[1,-2,3,1],[2,k,6,6],[-1,3,k-3,0]]);
[ 1 -2 3 1 ]
[ ]
A := [ 2 k 6 6 ]
[ ]
[ -1 3 k - 3 0 ]
> R := RowEchelon(A,'dt','rank','P','L','U');
[ 9 + k ]
[ 1 0 0 ----- ]
[ 4 + k ]
[ ]
[ 4 ]
R := [ 0 1 0 ----- ]
[ 4 + k ]
[ ]
[ 1 ]
[ 0 0 1 ----- ]
[ 4 + k ]
> dt;
k ( 4 + k)
> rank;
3
#
# det(U) = k*(4+k) so U is singular when k=-4 or k=0, which
# therefore need separate investigation.
#
> R := RowEchelon(subs(k=0,eval(A)),'dt','rank');
[ 1 0 3 3 ]
[ ]
R := [ 0 1 0 1 ]
[ ]
[ 0 0 0 0 ]
> dt;
4
> rank;
2
> R := RowEchelon(subs(k=-4,eval(A)),'dt');
[ 1 0 -5 0 ]
[ ]
R := [ 0 1 -4 0 ]
[ ]
[ 0 0 0 1 ]
> dt;
4