PSD(正半定)矩阵的平方根的逆

时间:2017-03-11 23:19:10

标签: r

假设我有一个正半正定矩阵S,我希望得到该矩阵的平方根的倒数,即S^(-1/2)

我可以这样做吗?

ei <- eigen(S)
V <- ei$vectors
res <- V %*% diag(1 / sqrt(ei$values)) %*% t(V)

res是否等于S^(-1/2)

我只对inverse of square root的特征值S,这是正确的吗?

我知道:如果有人想要S^(1/2),那么res <- V %*% diag(sqrt(ei$values)) %*% t(V)res = S^(1/2)

S^(-1/2)怎么样?

感谢。

2 个答案:

答案 0 :(得分:2)

是。我们可以很容易地得到一个例子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

另请注意,S和res通勤,即all.equal(S %*% res, res %*% S)为TRUE,因此最后一行代码中的3个因子可以按任何顺序写入。

答案 1 :(得分:0)

如果根据OP的查询,输入矩阵是正半正定(并且不是正定),则其特征值不会全部为正,并且上面答案中给出的方法将失败,因为

diag(1 / sqrt(ei$values))

不是有限矩阵。