ldl

ldl(A) returns the LDL factorization for Hermitian indefinite matrices.
  • L = ldl(A): returns the permuted lower triangular matrix L
  • [L,D] = ldl(A): satisfies A = L*D*LT, where L is a permuted lower triangular square matrix, D is a diagonal matrix, and LT is the transpose of L
  • [L,D,p] = ldl(A): returns L, the lower triangular square matrix with ones in its diagonal, the diagonal D and the permutation matrix p, such that p'*A*p = L*D*L'
  • ldl(A,'upper'): the output matrix L is upper triangular

Examples

>> A = [2 -1 0;-1 2 -1;0 -1 1]
[L D] = ldl(A)

[A:3x3 double]
[L:3x3 double]
[D:3x3 double]

>> L#

            1            0            0
         -0.5            1            0
            0    -0.666667            1


>> D#

            2            0            0
            0          1.5            0
            0            0     0.333333
	 
>> ldl(A,'upper')#

            1         -0.5            0
            0            1    -0.666667
            0            0            1
>> A = [1 1 4 -1;1 5 0 -1;4 0 21 -4;-1 -1 -4 10]; ldl(A)#

     0.190476   -0.0257732     0.199157            1
            0    -0.108247            1            0
            1            0            0            0
    -0.190476            1            0            0


>> [L D p] = ldl(A)

[L:4x4 double]
[D:4x4 double]
[p:4x4 double]

>> L#

            1            0            0            0
    -0.190476            1            0            0
            0    -0.108247            1            0
     0.190476   -0.0257732     0.199157            1


>> p#

            0            0            0            1
            0            0            1            0
            1            0            0            0
            0            1            0            0

References

LDL decomposition

See also

pascal | qr