Я нашел письменную функцию разложения Холецкого.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)
}
Может кто-нибудь сказать мне, откуда эти ошибки?