9.4 Cholesky Decomposition

Chol
## function (M) 
## {
##     n = dim(M)[1]
##     M2 = matrix(rep(0, n * n), nrow = n, ncol = n)
##     for (i in 1:n) {
##         for (j in 1:i) {
##             v = M[i, j]
##             for (k in 1:max(1, (j - 1))) v = v - M2[i, k] * M2[j, 
##                 k]
##             if (j < i) {
##                 M2[i, j] = v/M2[j, j]
##             }
##             else {
##                 if (v < 0) 
##                   return(NULL)
##                 M2[j, j] = sqrt(v)
##             }
##         }
##     }
##     return(M2)
## }
## <bytecode: 0x000001e2b3328a20>
## <environment: namespace:math>
M = matrix(c(4,3,2,1,0.5, 3,4,3,2,1, 2,3,4,3,2, 1,2,3,4,3, 0.5,1, 2,3,4), ncol=5) ; M
##      [,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
Chol(M)
##      [,1]   [,2]   [,3]  [,4]  [,5]
## [1,] 2.00 0.0000 0.0000 0.000 0.000
## [2,] 1.50 1.3229 0.0000 0.000 0.000
## [3,] 1.00 1.1339 1.3093 0.000 0.000
## [4,] 0.50 0.9449 1.0911 1.291 0.000
## [5,] 0.25 0.4725 0.9274 1.097 1.285
chol(M)
##      [,1]  [,2]  [,3]   [,4]   [,5]
## [1,]    2 1.500 1.000 0.5000 0.2500
## [2,]    0 1.323 1.134 0.9449 0.4725
## [3,]    0 0.000 1.309 1.0911 0.9274
## [4,]    0 0.000 0.000 1.2910 1.0973
## [5,]    0 0.000 0.000 0.0000 1.2845