Một vấn đề phổ biến trong thống kê là tính toán nghịch đảo căn bậc hai của ma trận xác định dương đối xứng. Điều gì sẽ là cách hiệu quả nhất của máy tính này?
Tôi đã xem qua một số tài liệu (mà tôi chưa đọc) và một số mã R ngẫu nhiên ở đây , mà tôi sẽ sao chép ở đây để thuận tiện
# 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))
}
Tôi không hoàn toàn chắc chắn tôi hiểu dòng d = (d+abs(d))/2
. Có cách nào hiệu quả hơn để tính toán nghịch đảo căn bậc hai ma trận không? Hàm R eigen
gọi LAPACK .
d[d<0] = 0
, nó có ý nghĩa hơn.