基质分解产生的NaN

时间:2018-06-26 06:37:02

标签: r

我发现了Cholesky分解的书面功能。 Chol()在所有设置的矩阵上都能流畅运行,不幸的是,我在Git上找到的完整代码没有。它产生:

Warning message:
In sqrt(m[i, i] - p.sum) : NaNs produced 

它可以在示例对称矩阵上工作:

(A <- matrix(c(5, 1, 2, 1, 9, 3, 2, 3, 7), 3))

我当然可以使用chol()函数,但是我试图发现这段代码背后的逻辑:

choleskymatrix <- function(m) {
count.rows <- nrow(m)
count.cols <- ncol(m)

L = diag(0, count.rows)
for(i in 1:count.rows) {
    for(k in 1:i) {
        p.sum <- 0
        for(j in 1:k)
            p.sum <- p.sum + L[j, i] * L[j, k]
        if(i == k)
            L[k, i] <- sqrt(m[i, i] - p.sum)
        else
            L[k, i] <- (m[k, i] - p.sum) / L[k, k]
    }
}
return(L)
}

有人可以告诉我这些错误来自哪里吗?

0 个答案:

没有答案