2017-03-11 15 views
2

假設我有一個正半定矩陣S,我想得到這個矩陣的平方根的倒數,即S^(-1/2)PSD(正半定)矩陣的平方根逆

可以這樣嗎?

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

res等於S^(-1/2)

我只是做inverse of square rootS的特徵值,這是正確的嗎?

我知道:如果想要得到S^(1/2),那麼res <- V %*% diag(sqrt(ei$values)) %*% t(V),這就是res = S^(1/2)

S^(-1/2)怎麼樣?

感謝。

回答

2

是的。我們可以很容易地舉個例子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個因素中的最後一行代碼可以以任何順序書寫。

0

如果作爲每OP的詢問,輸入矩陣是半正定的(和不正定),它的特徵值將不是全部爲正,並且在上面的答案將會失敗給出的方法中,由於

diag(1/sqrt(ei$values)) 

不會是有限矩陣。