linalg[LUdecomp] - LU decomposition of a matrix
|
Calling Sequence
|
|
LUdecomp(A)
LUdecomp(A, arg2, arg3, ...)
LUdecomp(A, P='p', L='l', U='u' , U1='u1', R='r', rank='ran', det='d')
|
|
Parameters
|
|
A
|
-
|
rectangular matrix
|
arg.i
|
-
|
(optional) of the form name=val
|
P='p'
|
-
|
(optional) the pivot factor
|
L='l'
|
-
|
(optional) the unit lower triangular factor
|
U='u'
|
-
|
(optional) the upper triangular factor
|
U1='u1'
|
-
|
(optional) the modified U factor
|
R='r'
|
-
|
(optional) the row-reduced factor
|
rank='ran'
|
-
|
(optional) the rank of A
|
det='d'
|
-
|
(optional) the determinant of U1
|
|
|
|
|
Description
|
|
•
|
The routine LUdecomp computes both the traditional LU decomposition and a modified PLU1R decomposition of the matrix A. It returns U.
|
•
|
For matrices of floating-point entries, a partial (row) pivoting method is used. For symbolic computation, pivoting is done only when a leading entry is zero. The pivot (permutation) matrix is returned as P.
|
•
|
The basic decomposition generates a square unit lower triangular L factor and an upper triangular U factor with the same dimensions as A so that A = P*L*U.
|
•
|
The decomposition further factors U into U1*R where U1 is square upper triangular and R is the unique reduced row-echelon form of the matrix A. In this case A = P*L*U1*R.
|
•
|
The det parameter is defined to be the determinant of the U1 factor. This is non-zero for all matrices. When A has full rank, this will coincide with the determinant of A.
|
•
|
The rank parameter will be the rank of A. This will be of questionable value if A is composed of floating-point values and is ill-conditioned.
|
•
|
U1 is assumed to be non-singular. The matrix R, i.e. the row-echelon factor of A, will only be correct if this is the case. If A has parameters in its entries, and for some values of the parameters det(U1) = 0, then the row-echelon form must be recomputed for these values of the parameters.
|
•
|
Note that this paper names the U1 factor simply U.
|
•
|
The command with(linalg,LUdecomp) allows the use of the abbreviated form of this command.
|
|
|
Examples
|
|
Important: The linalg package has been deprecated. Use the superseding packages, LinearAlgebra and VectorCalculus, instead
>
|
|
>
|
|
| (1) |
>
|
|
| (2) |
show the results
>
|
|
| (3) |
>
|
|
| (4) |
>
|
|
| (5) |
verify the decomposition (p is the identity).
>
|
|
| (6) |
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
det(u1) = k*(4+k) so u1 is singular when k=-4 or k=0, we investigate these separately
>
|
|
| (10) |
>
|
|
| (11) |
>
|
|
| (12) |
>
|
|
| (13) |
>
|
|
| (14) |
>
|
|
| (15) |
and floating point gaussian elimination
>
|
|
| (16) |
>
|
|
| (17) |
>
|
|
| (18) |
|
|
References
|
|
|
Corless, Robert M.; Jeffrey, David; and Nerenberg, M. A. H. "The Row Echelon Decomposition of a Matrix." University of Western Ontario Tech Report AM-91-01, Department of Applied Mathematics, 1991.
|
|
|