Распространенной проблемой в статистике является вычисление обратного корня квадратного от симметричной положительно определенной матрицы. Что было бы наиболее эффективным способом вычисления этого?
Я натолкнулся на некоторую литературу (которую я еще не читал), и некоторый случайный код R здесь , который я воспроизведу здесь для удобства
# function to compute the inverse square root of a matrix
fnMatSqrtInverse = function(mA) {
ei = eigen(mA)
d = ei$values
d = (d+abs(d))/2
d2 = 1/sqrt(d)
d2[d == 0] = 0
return(ei$vectors %*% diag(d2) %*% t(ei$vectors))
}
Я не совсем уверен, что понимаю линию d = (d+abs(d))/2
. Есть ли более эффективный способ вычисления обратного корня квадратного корня матрицы? Функция R eigen
вызывает LAPACK .
d[d<0] = 0
, что более выразительно.