R: Find a few approximate largest eigenvalues and corresponding...

partial_eigen {irlba} | R Documentation

## Find a few approximate largest eigenvalues and corresponding eigenvectors of a symmetric matrix.

### Description

Use `partial_eigen` to estimate a subset of the largest (most positive) eigenvalues and corresponding eigenvectors of a symmetric dense or sparse real-valued matrix.

### Usage

    partial_eigen(x, n = 5, symmetric = TRUE, ...)

### Arguments

`x` | numeric real-valued dense or sparse matrix.
`n` | number of largest eigenvalues and corresponding eigenvectors to compute.
`symmetric` | `TRUE` indicates `x` is a symmetric matrix (the default); specify `symmetric=FALSE` to compute the largest eigenvalues and corresponding eigenvectors of `t(x) %*% x` instead.
`...` | optional additional parameters passed to the `irlba` function.

### Value

Returns a list with entries:

- values n approximate largest eigenvalues

- vectors n approximate corresponding eigenvectors

### Note

Specify `symmetric=FALSE` to compute the largest `n` eigenvalues and corresponding eigenvectors of the symmetric matrix cross-product `t(x) %*% x`.

This function uses the `irlba` function under the hood. See `?irlba` for description of additional options, especially the `tol` parameter.

See the RSpectra package https://cran.r-project.org/package=RSpectra for more comprehensive partial eigenvalue decomposition.

### References

Augmented Implicitly Restarted Lanczos Bidiagonalization Methods, J. Baglama and L. Reichel, SIAM J. Sci. Comput. 2005.

### See Also

`eigen`, `irlba`

### Examples

    set.seed(1)
    # Construct a symmetric matrix with some positive and negative eigenvalues:
    V <- qr.Q(qr(matrix(runif(100),nrow=10)))
    x <- V %*% diag(c(10, -9, 8, -7, 6, -5, 4, -3, 2, -1)) %*% t(V)
    partial_eigen(x, 3)$values

    # Compare with eigen
    eigen(x)$values[1:3]

    # Use symmetric=FALSE to compute the eigenvalues of t(x) %*% x for general
    # matrices x:
    x <- matrix(rnorm(100), 10)
    partial_eigen(x, 3, symmetric=FALSE)$values
    eigen(crossprod(x))$values

[Package irlba version 2.3.2 Index]