| graph.eigen {igraph} | R Documentation |
Calculate selected eigenvalues and eigenvectors of a (supposedly sparse) graph.
graph.eigen (graph, algorithm = c("arpack", "auto", "lapack", "comp_auto",
"comp_lapack", "comp_arpack"), which = list(),
options = igraph.arpack.default)
igraph.eigen.default
graph |
The input graph, can be directed or undirected. |
algorithm |
The algorithm to use. Currently only |
which |
A list to specify which eigenvalues and eigenvectors to calculate. By default the leading (i.e. largest magnitude) eigenvalue and the corresponding eigenvector is calculated. |
options |
Options for the ARPACK solver. See
|
The which argument is a list and it specifies which eigenvalues
and corresponding eigenvectors to calculate: There are eight options:
Eigenvalues with the largest magnitude. Set pos to
LM, and howmany to the number of eigenvalues you
want.
Eigenvalues with the smallest magnitude. Set pos to
SM and howmany to the number of eigenvalues you want.
Largest eigenvalues. Set pos to LA and
howmany to the number of eigenvalues you want.
Smallest eigenvalues. Set pos to SA and
howmany to the number of eigenvalues you want.
Eigenvalues from both ends of the spectrum. Set pos to
BE and howmany to the number of eigenvalues you
want. If howmany is odd, then one more eigenvalue is returned
from the larger end.
Selected eigenvalues. This is not (yet) implemented currently.
Eigenvalues in an interval. This is not (yet) implemented.
All eigenvalues. This is not implemented yet. The standard
eigen function does a better job at this, anyway.
Note that ARPACK might be unstable for graphs with multiple components, e.g. graphs with isolate vertices.
Depends on the algorithm used.
For arpack a list with three entries is returned:
options |
See the return value for |
values |
Numeric vector, the eigenvalues. |
vectors |
Numeric matrix, with the eigenvectors as columns. |
Gabor Csardi csardi.gabor@gmail.com
get.adjacency to create a (sparse) adjacency
matrix.
## Small example graph, leading eigenvector by default
kite <- graph.famous("Krackhardt_kite")
graph.eigen(kite)[c("values", "vectors")]
## Double check
eigen(get.adjacency(kite, sparse=FALSE))$vectors[,1]
## Should be the same as 'evcent' (but rescaled)
cor(evcent(kite)$vector, graph.eigen(kite)$vectors)
## Smallest eigenvalues
graph.eigen(kite, which=list(pos="SM", howmany=2))$values