我不明白如何使用chol
R 中的函数来分解正半定矩阵。(或者我这样做,并且有一个错误。)文档指出:
如果 pivot = TRUE,则可以计算半正定 x 的 Choleski 分解。x 的排名以 attr(Q, "rank") 形式返回,但会出现数值错误。枢轴作为 attr(Q, "pivot") 返回。t(Q) %*% Q 不再等于 x。但是,设置 pivot <- attr(Q, "pivot") 和 oo <- order(pivot),确实 t(Q[, oo]) %*% Q[, oo] 等于 x ...
以下示例似乎与此描述不符。
> x <- matrix(1, nrow=3, ncol=3)
> Q <- chol(x, pivot=TRUE)
> oo <- order(attr(Q, 'pivot'))
> t(Q[, oo]) %*% Q[, oo]
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 3
结果不是x
。我是否错误地使用了枢轴?