Next: Test File for Up: Maple Implementation Previous: Source Code

## Help File

The following is the help file for RowEchelon. It is accessible in Maple on issuing the commands

```>with(share):
>?RowEchelon
```
To 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

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

Robert Corless
Wed Jan 31 11:33:59 EST 1996