Learn R Programming

sanic (version 0.0.2)

svd2: Singular Value Decomposition

Description

Solvers for generalized eigenproblems around the matrix \(A\). Compute singular values \(\Sigma\), left singular vectors \(U\) and right singular vectors \(V\) of \(A\), such that \(A = U \Sigma V^*\). Two different types are available: (1) bidiagonal divide and conquer strategy (BDC) SVD, and (2) two-sided Jacobi SVD for small matrices (<16) and high accuracy.

Usage

svd2(a, type = c("BDC", "Jacobi"), vectors = TRUE, thin = TRUE)

Value

Solves the generalised eigenproblem and returns a list with singular values in the "d" component and, if requested, singular vectors in the components "u" and "v".

Arguments

a

Numeric matrix.

type

Character scalar. Whether to use BDC or Jacobi SVD.

vectors

Logical scalar indicating whether singular vectors should be computed and returned.

thin

Logical scalar indicating whether singular vectors should be returned in thinned or full format.

Examples

Run this code
set.seed(42)
# Compute singular values and vectors using BDC
A <- matrix(rnorm(9), nrow = 3, ncol = 3)
sv <- svd2(A)

# Compute singular values using Jacobi
A <- matrix(rnorm(9), nrow = 3, ncol = 3)
sv <- svd2(A, type = "J", vectors = FALSE)

# Compute singular values and full vectors using BDC
A <- matrix(rnorm(12), nrow = 4, ncol = 3)
sv <- svd2(A, type = "B", thin = FALSE)
A <- matrix(rnorm(12), nrow = 3, ncol = 4)
sv <- svd2(A, type = "B", thin = FALSE)

Run the code above in your browser using DataLab