

Inicio del mensaje reenviado:

> De: Arnau Mir <arnau.mir@uib.es>
> Fecha: 14 de noviembre de 2011 13:24:31 GMT+01:00
> Para: Martin Maechler <maechler@stat.math.ethz.ch>
> Asunto: Re: [R] How to compute eigenvectors and eigenvalues?
> 
> Sorry, but I can't explain very well.
> 
> 
> The matrix 4*mp is:
> 
> 4*mp
>      [,1] [,2] [,3]
> [1,]    0    1    1
> [2,]    3    0    1
> [3,]    1    3    2
> > 
> 
> The eigenvalues are:
> lam
> [1]  4 -1 -1
> 
> There is only one eigenvector linearly independent with eigenvalue -1. This eigenvector is c(0,1,-1) but R computes two eigenvectors:
> 
> > V
>           [,1]          [,2]          [,3]
> [1,] 0.3207501  1.068531e-08 -1.068531e-08
> [2,] 0.4490502 -7.071068e-01 -7.071068e-01
> [3,] 0.8339504  7.071068e-01  7.071068e-01
> 
> 
> One is 
>  V[,2]
> [1]  1.068531e-08 -7.071068e-01  7.071068e-01
> 
> and the other one:
> 
> > V[,3]
> [1] -1.068531e-08 -7.071068e-01  7.071068e-01
> 
> The first component of these two vectors must be zero but due to numerical errors, R computes  1.068531e-08  and  -1.068531e-08 respectively. 
> 
> So, the matrix V is singular but R isn't aware of. 
> 
> You are right when you say:
> 
> V %*% diag(lam) %*% solve(V)
>              [,1]          [,2] [,3]
> [1,] 8.788496e-09  1.000000e+00    1
> [2,] 3.000000e+00 -9.313226e-10    1
> [3,] 1.000000e+00  3.000000e+00    2
> 
> 
> but this expression doesn't make any sense because solve(V) doesn't exist.
> 
> What I want is that R responses that mp or 4*mp is not diagonalizable and solve(V) doesn't exist.
> 
> Arnau.
> El 14/11/2011, a las 13:06, Martin Maechler escribió:
> 
>> 
>>> Consider the following matrix:
>> 
>>>> mp <- matrix(c(0,1/4,1/4,3/4,0,1/4,1/4,3/4,1/2),3,3,byrow=T)
>> 
>>>> mp
>>>     [,1] [,2] [,3]
>>> [1,] 0.00 0.25 0.25
>>> [2,] 0.75 0.00 0.25
>>> [3,] 0.25 0.75 0.50
>> 
>>> The eigenvectors of the previous matrix are 1, 0.25 and 0.25 and it is not a diagonalizable matrix.
>> 
>>> When you try to find the eigenvalues and eigenvectors with R, R responses:
>> 
>>>> eigen(mp)
>> 
>>> $values
>>> [1]  1.00 -0.25 -0.25
>> 
>>> $vectors
>>>          [,1]          [,2]          [,3]
>>> [1,] 0.3207501  1.068531e-08 -1.068531e-08
>>> [2,] 0.4490502 -7.071068e-01 -7.071068e-01
>>> [3,] 0.8339504  7.071068e-01  7.071068e-01
>> 
>>> The eigenvalues are correct but the eigenvectors aren't. 
>> 
>> Well, let's look at   4*mp  which is an integer matrix:
>> 
>>> (M <- matrix(c(rep(c(0, 3, 1, 1), 2),2), 3,3)); em <- eigen(M); V <- em$vectors; lam <- em$values
>>     [,1] [,2] [,3]
>> [1,]    0    1    1
>> [2,]    3    0    1
>> [3,]    1    3    2
>>> all.equal(M,  V %*% diag(lam) %*% solve(V))
>> [1] TRUE
>>> zapsmall(V %*% diag(lam) %*% solve(V))
>>     [,1] [,2] [,3]
>> [1,]    0    1    1
>> [2,]    3    0    1
>> [3,]    1    3    2
>>> 
>> 
>> So, as you see  V is not singular,
>> and  the basic property of the eigenvalue decomposition is
>> fulfilled:
>> 
>>   M   = V Lambda V^{-1}
>> or
>>   M V = V Lambda
>> 
>> i.e. each column of V  *is* eigenvector to the corresponding 
>> eigenvalue.
>> 
>> 
>>> Moreover, if you try to compute the inverse of the matrix of eigenvectors, R is not aware that this matrix is singular:
>> 
>>>> solve(eigen(mp)$vectors)
>>>              [,1]          [,2]          [,3]
>>> [1,]  6.235383e-01  6.235383e-01  6.235383e-01
>>> [2,]  3.743456e+07 -9.358641e+06 -9.358640e+06
>>> [3,] -3.743456e+07  9.358640e+06  9.358641e+06
>> 
>> it isn't...
>> 
>> 
>> 
>>> My question is: how can I fix it?
>> 
>> No need to fix anything, as nothing is broken ;-)
>> 
>> Martin Maechler, ETH Zurich
>> 
> 
> ------------------------------------------------------------
> Arnau Mir Torres
> Edifici A. Turmeda
> Campus UIB
> Ctra. Valldemossa, km. 7,5
> 07122 Palma de Mca.
> tel: (+34) 971172987
> fax: (+34) 971173003
> email: arnau.mir@uib.es
> URL: http://dmi.uib.es/~arnau
> ------------------------------------------------------------
> 

------------------------------------------------------------
Arnau Mir Torres
Edifici A. Turmeda
Campus UIB
Ctra. Valldemossa, km. 7,5
07122 Palma de Mca.
tel: (+34) 971172987
fax: (+34) 971173003
email: arnau.mir@uib.es
URL: http://dmi.uib.es/~arnau
------------------------------------------------------------


	[[alternative HTML version deleted]]

