Learn R Programming

rARPACK (version 0.11-0)

svds: Find the Largest k Singular Values/Vectors of a Matrix

Description

This function is a simple wrapper of the svds() function in the RSpectra package. Also see the documentation there.

Given an $m$ by $n$ matrix $A$, function svds() can find its largest $k$ singular values and the corresponding singular vectors. It is also called the Truncated Singular Value Decomposition since it only contains a subset of the whole singular triplets.

Currently svds() supports matrices of the following classes:

matrix
The most commonly used matrix type, defined in base package.
dgeMatrix
General matrix, equivalent to matrix, defined in Matrix package.
dgCMatrix
Column oriented sparse matrix, defined in Matrix package.
dgRMatrix
Row oriented sparse matrix, defined in Matrix package.

Note that when $A$ is symmetric, SVD reduces to eigen decomposition, so you may consider using eigs() instead.

Usage

svds(A, k, nu = k, nv = k, opts = list(), ...)

Arguments

A
The matrix whose truncated SVD is to be computed.
k
Number of singular values requested.
nu
Number of left singular vectors to be computed. This must be between 0 and k.
nv
Number of right singular vectors to be computed. This must be between 0 and k.
opts
Control parameters related to the computing algorithm. See Details below.
...
Currently not used.

Value

A list with the following components:
d
A vector of the computed singular values.
u
An m by nu matrix whose columns contain the left singular vectors. If nu == 0, NULL will be returned.
v
An n by nv matrix whose columns contain the right singular vectors. If nv == 0, NULL will be returned.
nconv
Number of converged singular values.
niter
Number of iterations used.
nops
Number of matrix-vector multiplications used.

Details

The opts argument is a list that can supply any of the following parameters:

ncv
Number of Lanzcos basis vectors to use. More vectors will result in faster convergence, but with greater memory use. ncv must be satisfy $k < ncv <= p$="" where="" p = min(m, n). Default is min(p, max(2*k+1, 20)).

tol
Precision parameter. Default is 1e-10.

maxitr
Maximum number of iterations. Default is 1000.

See Also

eigen(), svd(), eigs().

Examples

Run this code
m = 100
n = 20
k = 5
set.seed(111)
A = matrix(rnorm(m * n), m)

svds(A, k)
svds(t(A), k, nu = 0, nv = 3)

## Sparse matrices
library(Matrix)
A[sample(m * n, m * n / 2)] = 0
Asp1 = as(A, "dgCMatrix")
Asp2 = as(A, "dgRMatrix")

svds(Asp1, k)
svds(Asp2, k, nu = 0, nv = 0)

Run the code above in your browser using DataLab