Section: Transforms/Decompositions
lu
is
[L,U,P] = lu(A),
where L
is lower triangular, U
is upper triangular, and
P
is a permutation matrix such that L*U = P*A
. The second form is
[V,U] = lu(A),
where V
is P'*L
(a row-permuted lower triangular matrix),
and U
is upper triangular. For sparse, square matrices,
the LU decomposition has the following form:
[L,U,P,Q,R] = lu(A),
where A
is a sparse matrix of either double
or dcomplex
type.
The matrices are such that L*U=P*R*A*Q
, where L
is a lower triangular
matrix, U
is upper triangular, P
and Q
are permutation vectors
and R
is a diagonal matrix of row scaling factors. The decomposition
is computed using UMFPACK for sparse matrices, and LAPACK for dense
matrices.
--> a = float([1,2,3;4,5,8;10,12,3]) a = <float> - size: [3 3] Columns 1 to 3 1 2 3 4 5 8 10 12 3 --> [l,u,p] = lu(a) l = <float> - size: [3 3] Columns 1 to 3 1.00000000 0.00000000 0.00000000 0.10000000 1.00000000 0.00000000 0.40000001 0.24999993 1.00000000 u = <float> - size: [3 3] Columns 1 to 3 10.00000000 12.00000000 3.00000000 0.00000000 0.79999995 2.70000005 0.00000000 0.00000000 6.12500048 p = <float> - size: [3 3] Columns 1 to 3 0 0 1 1 0 0 0 1 0 --> l*u ans = <float> - size: [3 3] Columns 1 to 3 10 12 3 1 2 3 4 5 8 --> p*a ans = <float> - size: [3 3] Columns 1 to 3 10 12 3 1 2 3 4 5 8
Now we repeat the exercise with a sparse matrix, and demonstrate the use of the permutation vectors.
--> a = sparse([1,0,0,4;3,2,0,0;0,0,0,1;4,3,2,4]) a = <int32> - size: [4 4] Matrix is sparse with 9 nonzeros --> [l,u,p,q,r] = lu(a) l = <double> - size: [4 4] Matrix is sparse with 4 nonzeros u = <double> - size: [4 4] Matrix is sparse with 9 nonzeros p = <int32> - size: [1 4] Columns 1 to 4 4 2 1 3 q = <int32> - size: [1 4] Columns 1 to 4 3 2 1 4 r = <double> - size: [4 4] Matrix is sparse with 4 nonzeros --> full(l*a) ans = <double> - size: [4 4] Columns 1 to 4 1 0 0 4 3 2 0 0 0 0 0 1 4 3 2 4 --> b = r*a b = <double> - size: [4 4] Matrix is sparse with 9 nonzeros --> full(b(p,q)) ans = <double> - size: [4 4] Columns 1 to 3 0.15384615384615385 0.23076923076923078 0.30769230769230771 0.00000000000000000 0.40000000000000002 0.60000000000000009 0.00000000000000000 0.00000000000000000 0.20000000000000001 0.00000000000000000 0.00000000000000000 0.00000000000000000 Columns 4 to 4 0.30769230769230771 0.00000000000000000 0.80000000000000004 1.00000000000000000