next up previous
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):
>readlib(Echelon):
>?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
   
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


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