Częstym problemem w statystyce jest obliczanie pierwiastka kwadratowego odwrotnego symetrycznej dodatniej macierzy określonej. Jaki byłby najbardziej efektywny sposób obliczenia tego?
Natknąłem pewnym literaturze (które nie zostały jeszcze przeczytane) oraz jakiegoś przypadkowego kodu R tutaj , które będę tutaj dla wygody odtworzenia
# 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))
}
Nie jestem do końca pewien, czy rozumiem tę linię d = (d+abs(d))/2
. Czy istnieje bardziej skuteczny sposób obliczania odwrotności pierwiastka kwadratowego macierzy? Funkcja R eigen
wywołuje LAPACK .
d[d<0] = 0
, co jest bardziej wyraziste.