# SVD

From matlib v0.9.2
by Michael Friendly

##### Singular Value Decomposition of a Matrix

Compute the singular-value decomposition of a matrix \(X\) either by Jacobi
rotations (the default) or from the eigenstructure of \(X'X\) using
`Eigen`

. Both methods are iterative.
The result consists of two orthonormal matrices, \(U\), and \(V\) and the vector \(d\)
of singular values, such that \(X = U diag(d) V'\).

##### Usage

```
SVD(X, method = c("Jacobi", "eigen"), tol = sqrt(.Machine$double.eps),
max.iter = 100)
```

##### Arguments

- X
a square symmetric matrix

- method
either

`"Jacobi"`

(the default) or`"eigen"`

- tol
zero and convergence tolerance

- max.iter
maximum number of iterations

##### Details

The default method is more numerically stable, but the eigenstructure method is much simpler. Singular values of zero are not retained in the solution.

##### Value

a list of three elements: `d`

-- singular values, `U`

-- left singular vectors, `V`

-- right singular vectors

##### See Also

`svd`

, the standard svd function

##### Examples

```
# NOT RUN {
C <- matrix(c(1,2,3,2,5,6,3,6,10), 3, 3) # nonsingular, symmetric
C
SVD(C)
# least squares by the SVD
data("workers")
X <- cbind(1, as.matrix(workers[, c("Experience", "Skill")]))
head(X)
y <- workers$Income
head(y)
(svd <- SVD(X))
VdU <- svd$V %*% diag(1/svd$d) %*%t(svd$U)
(b <- VdU %*% y)
coef(lm(Income ~ Experience + Skill, data=workers))
# }
```

*Documentation reproduced from package matlib, version 0.9.2, License: GPL (>= 2)*

### Community examples

Looks like there are no examples yet.