ldl
LDL decomposition.
Syntax
[U,D,P] = ldl(A)
[U,D,P] = ldl(A,'upper')
[L,D,P] = ldl(A,'lower')
Inputs
- A
 - The Hermitian matrix to decompose, typically indefinite.
 
Outputs
- U
 - Upper triangular matrix.
 - L
 - Lower triangular matrix.
 - D
 - Diagonal or block diagonal matrix.
 - P
 - Permutation matrix.
 
Example
A = [2, -1, 3; -1, 2, 2; 3, 2, 5]
[U,D,P] = ldl(A)
      U = [Matrix] 3 x 3
1.00000  0.00000  0.60000
0.00000  1.00000  0.40000
0.00000  0.00000  1.00000
D = [Matrix] 3 x 3
 0.20000  -2.20000  0.00000
-2.20000   1.20000  0.00000
 0.00000   0.00000  5.00000
P = [Matrix] 3 x 3
1  0  0
0  1  0
0  0  1
    Comments
[U,D,P] = ldl(A,'upper') computes matrix U such that A = P*U*D*U'*P'
[L,D,P] = ldl(A,'lower') computes matrix L such that A = P*L*D*L'*P'
ldl uses the LAPACK routines 'dsytrf', 'dsyconv', 'zhetrf' and 'zsyconv'.
A is assumed to be real symmetric or Hermitian, with the second argument specifying which triangle is used. The default is 'upper'.