R PSD(半正定)矩阵的平方根逆
假设我有一个半正定矩阵R PSD(半正定)矩阵的平方根逆,r,R,假设我有一个半正定矩阵S,我想得到这个矩阵的平方根的逆,也就是S^(-1/2) 我可以这样做吗 ei <- eigen(S) V <- ei$vectors res <- V %*% diag(1 / sqrt(ei$values)) %*% t(V) ei是。我们可以很容易地以S为例,检查S乘以res乘以res是否为单位矩阵: set.seed(123) S <- crossprod(matrix(rnorm(9), 3)) ei <- eigen(S) V
S
,我想得到这个矩阵的平方根的逆,也就是S^(-1/2)
我可以这样做吗
ei <- eigen(S)
V <- ei$vectors
res <- V %*% diag(1 / sqrt(ei$values)) %*% t(V)
ei是。我们可以很容易地以S为例,检查S乘以res乘以res是否为单位矩阵:
set.seed(123)
S <- crossprod(matrix(rnorm(9), 3))
ei <- eigen(S)
V <- ei$vectors
res <- V %*% diag(1 / sqrt(ei$values)) %*% t(V)
S %*% res %*% res
## [,1] [,2] [,3]
## [1,] 1.0000e+00 -2.3731e-15 -1.6653e-16
## [2,] 3.3346e-15 1.0000e+00 -6.6613e-16
## [3,] -1.0235e-16 8.3267e-16 1.0000e+00
set.seed(123)
S如果根据OP的询问,输入矩阵是半正定的(而不是正定的),其特征值不会全部为正,并且上述答案中给出的方法将失败,因为
diag(1 / sqrt(ei$values))
将不是一个有限矩阵