2013-05-20 20 views

risposta

9

eigen la funzione non ti dà quello che stai cercando?

> B <- matrix(1:9, 3) 
> eigen(B) 
$values 
[1] 1.611684e+01 -1.116844e+00 -4.054214e-16 

$vectors 
      [,1]  [,2]  [,3] 
[1,] -0.4645473 -0.8829060 0.4082483 
[2,] -0.5707955 -0.2395204 -0.8164966 
[3,] -0.6770438 0.4038651 0.4082483 
+0

no, penso di no. Ad esempio, per la tua matrice, so autovalore 1.611684e + 01 e I cosa trovare autovettore per questo autovalore, non tutti i tre – user2080209

+2

@ user2080209: Cosa ti fa pensare che gli autovettori non siano nello stesso ordine degli autovalori? –

+0

@ user2080209, 'eig <- eigen (B); eig $ vectors [eig $ values ​​== 1.611684e + 01] 'selezionerà l'autovettore appropriato – huon

3

Leggere l'aiuto effettivo dello stato eigen funzione che il $vectors è una: "un p * p matrice le cui colonne contengono gli autovettori di x" Il vettore effettivo corrispondente al valore di autovalore più grande è la prima colonna di $vectors. Per ottenere direttamente esso:

> B <- matrix(1:9, 3) 
> eig <- eigen(B) 
> eig$vectors[,which.max(eig$values)] 
[1] -0.4645473 -0.5707955 -0.6770438 
# equivalent to: 
> eig$vectors[,1] 
[1] -0.4645473 -0.5707955 -0.6770438 

Nota che la risposta di @ user2080209 non funziona: sarebbe restituire la prima fila.