arpack_defaultsarpack(func, extra = NULL, sym = FALSE, options = arpack_defaults,
env = parent.frame(), complex = !sym)
func
.TRUE
here if it is, since it can speed up the computation.func
will be evaluated.complex=TRUE
(the default for
non-symmetric problems), then the matrix is complex.options
and some information about the
performed calculation, including an ARPACK exit code. See the details above.w <- Av
requires order $n$
rather than the usual order $n^2$ floating point operations. Please see
This function is an interface to ARPACK. igraph does not contain all ARPACK routines, only the ones dealing with symmetric and non-symmetric eigenvalue problems using double precision real numbers.
The eigenvalue calculation in ARPACK (in the simplest case) involves the
calculation of the $Av$ product where $A$ is the matrix we work with
and $v$ is an arbitrary vector. The function supplied in the fun
argument is expected to perform this product. If the product can be done
efficiently, e.g. if the matrix is sparse, then arpack
is usually
able to calculate the eigenvalues very quickly.
The options
argument specifies what kind of calculation to perform.
It is a list with the following members, they correspond directly to ARPACK
parameters. On input it has the following fields: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],On output the following additional fields are added: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object] Please see the ARPACK documentation for
additional details.
R.B. Lehoucq, Analysis and Implementation of an Implicitly Restarted Arnoldi Iteration. Rice University Technical Report TR95-13, Department of Computational and Applied Mathematics.
B.N. Parlett & Y. Saad, Complex Shift and Invert Strategies for Real Matrices. Linear Algebra and its Applications, vol 88/89, pp 575-595, (1987).
eigen_centrality
, page_rank
,
hub_score
, cluster_leading_eigen
are some of the
functions in igraph which use ARPACK. The ARPACK homepage is at
# Identity matrix
f <- function(x, extra=NULL) x
arpack(f, options=list(n=10, nev=2, ncv=4), sym=TRUE)
# Graph laplacian of a star graph (undirected), n>=2
# Note that this is a linear operation
f <- function(x, extra=NULL) {
y <- x
y[1] <- (length(x)-1)*x[1] - sum(x[-1])
for (i in 2:length(x)) {
y[i] <- x[i] - x[1]
}
y
}
arpack(f, options=list(n=10, nev=1, ncv=3), sym=TRUE)
# double check
eigen(laplacian_matrix(make_star(10, mode="undirected")))
## First three eigenvalues of the adjacency matrix of a graph
## We need the 'Matrix' package for this
if (require(Matrix)) {
g <- sample_gnp(1000, 5/1000)
M <- as_adj(g, sparse=TRUE)
f2 <- function(x, extra=NULL) { cat("."); as.vector(M %*% x) }
baev <- arpack(f2, sym=TRUE, options=list(n=vcount(g), nev=3, ncv=8,
which="LM", maxiter=200))
}
Run the code above in your browser using DataLab