Scilab Function
Last update : 17/6/2004

svd - décomposition en valeurs singulières

### Calling Sequence

  `s=svd(X)`
  `[U,S,V]=svd(X)`
  `[U,S,V]=svd(X,0) (obsolete)`
  `[U,S,V]=svd(X,"e")`
  `[U,S,V,rk]=svd(X [,tol])`

### Parameters

- `X` : matrice réelle ou complexe
- `s` : vecteur réel (valeurs singulières)
- `S` : matrice réelle diagonale (valeurs singulières sur la diagonale)
- `U,V` : matrices carrées unitaires (vecteurs singuliers).
- `tol` : nombre réel positif

### Description

`[U,S,V]=svd(X)` renvoie une matrice diagonale `S`, de même dimension que `X` avec des éléments diagonaux positifs classés par ordre décroissant, ainsi que deux matrices unitaires `U` et `V` telles que `X = U*S*V'`.`[U,S,V]=svd(X,"e")` renvoie la décomposition réduite : si `X` est une matrice `m x n` et que `m > n` alors seulement les n premières colonnes de `U` sont calculées et `S` est `n x n` .

`s=svd(X)` renvoie un vecteur `s` contenant les valeurs singulières.

`[U,S,V,rk]=svd(X [,tol])` renvoie de plus `rk`, le rang "numérique" de `X` c'est à dire le nombre de valeurs singulières plus grandes que `tol`.

La valeur par défaut de `tol` est la même que pour la fonction `rank`.

### Examples

        X=rand(4,2)*rand(2,4)
        svd(X)
        sqrt(spec(X*X'))

### See Also

`rank`, `qr`, `colcomp`, `rowcomp`, `sva`, `spec`,

### Used Function

la décomposition svd est basée sur les routines DGESVD pour les matrices réelles et ZGESVD pour le cas complexe.