[R] Matrix eigenvectors in R and MatLab
Spencer Graves
spencer.graves at pdf.com
Sat Apr 5 01:51:17 CEST 2003
Excellent analysis, Thomas. An alternative to looking at EISPACK
documentation is to do the following computations:
(1) Values %*% diag(vectors) %*% solve(Values)
(2) solve(Values) %*% diag(vectors) %*% Values
One of these two should return the original matrix; the other will
likely be very different. If so, the mystery is solved. If (1) returns
PA9900, then
PA9900 %*% Values = Values %*% diag(vectors)
Else
Values %*% PA9900 = diag(vectors) %*% Values
Best Wishes,
Spencer Graves
Thomas W Blackwell wrote:
> Mikael -
>
> The matrix PA9900 is not a symmetric matrix. Eigen() will
> automatically detect this. help("eigen") says explicitly:
>
> "For `eigen( , symmetric = FALSE)' the choice of length of
> the eigenvectors is not defined by LINPACK. In all other
> cases the vectors are normalized to unit length."
>
> In the example you give, the eigenvectors from R are clearly
> NOT normalized to unit length, while those from Matlab are.
> Even after normalizing them, the R eigenvectors will differ
> by order and sign from the Matlab ones. (Compare R column 3
> with Matlab column 2.) Have to look at the EISPACK source
> documentation to see whether it's returning right eigenvectors
> or left eigenvectors for an asymmetric matix.
>
> - tom blackwell - u michigan medical school - ann arbor -
>
> On Thu, 3 Apr 2003, Mikael Niva wrote:
>
>
>>Dear R-listers
>>
>>Is there anyone who knows why I get different eigenvectors when I run
>>MatLab and R? I run both programs in Windows Me. Can I make R to produce
>>the same vectors as MatLab?
>>
>>#R Matrix
>>PA9900<-c(11/24 ,10/53 ,0/1 ,0/1 ,29/43 ,1/24 ,27/53 ,0/1 ,0/1 ,13/43
>>,14/24 ,178/53 ,146/244 ,17/23 ,15/43 ,2/24 ,4/53 ,0/1 ,2/23 ,2/43 ,4/24
>>,58/53 ,26/244 ,0/1 ,5/43)
>>
>>#R-syntax
>>PA9900<-matrix(PA9900,nrow=5,byrow=T)
>>eigen(PA9900)
>>
>>#R-output
>>$values
>>[1] 1.2352970 0.3901522 -0.2562860 0.2259411 0.1742592
>>
>>$vectors
>> [,1] [,2] [,3] [,4] [,5]
>>[1,] -0.67795430 -1.70686496 -0.52613955 -8.675109 -0.8413826
>>[2,] -0.32621100 0.54611272 -0.21526356 -2.726193 -0.2876643
>>[3,] -2.83313878 -2.88801964 0.87388189 45.427935 4.5069361
>>[4,] -0.09857565 -0.33015962 0.09136359 -5.426254 -0.8201206
>>[5,] -0.68977432 0.01977374 0.61772506 3.751978 0.4348802
>>
>>%Matlab Matrix
>>PA9900 =[11/24 10/53 0/1 0/1 29/43 ;1/24 27/53 0/1 0/1 13/43 ;14/24
>>178/53 146/244 17/23 15/43 ;2/24 4/53 0/1 2/23 2/43 ;4/24 58/53 26/244
>>0/1 5/43]
>>
>>%MatLab-syntax
>>[wmat,dmat]=eig(mat)
>>
>>%MatLab-output
>>wmat =
>> -0.2250 0.4330 -0.4998 -0.1795 -0.1854
>> -0.1083 0.1771 0.1599 -0.0614 -0.0583
>> -0.9403 -0.7191 -0.8457 0.9617 0.9708
>> -0.0327 -0.0752 -0.0967 -0.1750 -0.1160
>> -0.2289 -0.5083 0.0058 0.0928 0.0802
>>
>>dmat =
>> 1.2353 0 0 0 0
>> 0 -0.2563 0 0 0
>> 0 0 0.3902 0 0
>> 0 0 0 0.1743 0
>> 0 0 0 0 0.2259
>>
>>Yours sincerely, Mikael Niva
>>
>>********************************************
>>Mikael Niva
>>Avd. f?r V?xtekologi, Dept. of Plant Ecology
>>EvolutionsBiologiskt Centrum, Uppsala Universitet
>>Villav?gen 14
>>752 36 UPPSALA
>>E-post Mikael.Niva at EBC.UU.SE
>>Tel. +46 (0)18 471 28 65
>>Fax +46 (0)18 55 34 19
>
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
More information about the R-help
mailing list