9.5 LDL’ Transformation

LDLT
## function (SymMat) 
## {
##     n = dim(SymMat)[1]
##     L = SymMat
##     for (i in 1:n) {
##         for (j in 1:i) {
##             if (j > 1) 
##                 for (k in 1:(j - 1)) L[i, j] = L[i, j] - L[i, 
##                   k] * L[j, k] * L[k, k]
##             if (j < i) 
##                 L[i, j] = L[i, j]/L[j, j]
##         }
##     }
##     D = diag(L)
##     for (i in 1:(n - 1)) {
##         L[i, i] = 1
##         for (j in (i + 1):n) L[i, j] = 0
##     }
##     L[n, n] = 1
##     Res = list(L, D)
##     names(Res) = c("L", "D")
##     return(Res)
## }
## <bytecode: 0x000001e2b3699f20>
## <environment: namespace:math>
Res = LDLT(M)
Res
## $L
##       [,1]   [,2]   [,3] [,4] [,5]
## [1,] 1.000 0.0000 0.0000 0.00    0
## [2,] 0.750 1.0000 0.0000 0.00    0
## [3,] 0.500 0.8571 1.0000 0.00    0
## [4,] 0.250 0.7143 0.8333 1.00    0
## [5,] 0.125 0.3571 0.7083 0.85    1
## 
## $D
## [1] 4.000 1.750 1.714 1.667 1.650
Res$L %*% diag(Res$D) %*% t(Res$L)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  4.0    3    2    1  0.5
## [2,]  3.0    4    3    2  1.0
## [3,]  2.0    3    4    3  2.0
## [4,]  1.0    2    3    4  3.0
## [5,]  0.5    1    2    3  4.0