[R] matrix power

Gabor Grothendieck ggrothendieck at gmail.com
Tue Aug 11 01:28:36 CEST 2009

```If its not important which of many solutions you use then
the generalized inverse can be used, say.  Just use 0
for each small eigenvalue and 1/sqrt(x) for the others.

On Mon, Aug 10, 2009 at 6:36 PM, cindy Guo<cindy.guo3 at gmail.com> wrote:
> Hi, Ted,
>
> Thanks for the sample code. It is exactly what I want. But can I ask another
> question? The matrix for which I want the negative square root is a
> covariance matrix. I suppose it should be positive definite, so I can do
> 1/sqrt(V) as you wrote. But the covariance matrix I got in R using the
> function cov has a lot of negative eigenvalues, like -5.338634e-17, so
> 1/sqrt(V) generates NA's. Can you tell what's the problem here.
>
> Thanks,
> Cindy
>
> On Mon, Aug 10, 2009 at 2:53 PM, Ted Harding
> <Ted.Harding at manchester.ac.uk>wrote:
>
>>  On 10-Aug-09 21:31:30, cindy Guo wrote:
>> > Hi, All,
>> > If I  have a symmetric matrix, how can I get the negative square root
>> > of the matrx, ie. X^(-1/2) ?
>> >
>> > Thanks,
>> >
>> > Cindy
>>
>>  X <- matrix(c(2,1,1,2),nrow=2)
>>  X
>> #      [,1] [,2]
>> # [1,]    2    1
>> # [2,]    1    2
>>
>>  E <- eigen(X)
>>  V <- E\$values
>>  Q <- E\$vectors
>>  Y <- Q%*%diag(1/sqrt(V))%*%t(Q)
>>  Y
>> #            [,1]       [,2]
>> # [1,]  0.7886751 -0.2113249
>> # [2,] -0.2113249  0.7886751
>>
>>  solve(Y%*%Y)    ## i.e. find its inverse
>> #      [,1] [,2]
>> # [1,]    2    1
>> # [2,]    1    2
>>
>> Hence (Y%*%Y)^(-1) = X, or Y = X^(-1/2)
>>
>> Hopingb this helps,
>> Ted.
>>
>> --------------------------------------------------------------------
>> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
>> Fax-to-email: +44 (0)870 094 0861
>> Date: 10-Aug-09                                       Time: 22:53:25
>> ------------------------------ XFMail ------------------------------
>>
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help