Поширеною проблемою статистики є обчислення квадратного кореня, оберненого симетричної позитивної певної матриці. Який був би найефективніший спосіб обчислення цього?
Я натрапив на які - то літератури (який я ще не читав), а деякий випадковий 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
, що є більш виразним.