Section courante

A propos

Section administrative du site

Décomposition SVD bidiagonale

La décomposition en valeurs singulières d'une matrice rectangulaire A de taille M×N est représentée par le produit A = U W VT, où U est une matrice orthogonale de taille M×M, W une matrice diagonale de taille M×N dont les éléments non négatifs sur la diagonale principale (valeurs singulières) sont classés par ordre décroissant, et V une matrice orthogonale de taille N×N.

Il existe plusieurs algorithmes pour calculer les valeurs singulières d'une matrice bidiagonale. Sachant qu'il existe un algorithme réduisant une matrice rectangulaire à une matrice bidiagonale en un nombre fini d'étapes grâce à une transformation orthogonale bilatérale, on peut ramener le problème de la décomposition en valeurs singulières d'une matrice quelconque à celui de la décomposition en valeurs singulières d'une matrice bidiagonale. Ceci est réalisé dans l'algorithme de décomposition SVD d'une matrice rectangulaire.

Remarque n° 1

La décomposition en valeurs singulières possède de nombreuses propriétés utiles permettant son utilisation pour l'inversion et la pseudo-inversion de matrices, la résolution de systèmes d'équations linéaires et l'évaluation des nombres de conditionnement, la résolution de systèmes sous-déterminés et surdéterminés, ainsi que pour de nombreux autres problèmes.

Description de la sous-routine

La sous-routine RMatrixBDSVD effectue la décomposition en valeurs singulières d'une matrice bidiagonale définie par les tableaux D et E (diagonales principale et secondaire). Selon la valeur de IsUpper, la matrice est considérée comme bidiagonale supérieure ou inférieure.

L'algorithme enregistre les valeurs singulières obtenues dans le tableau D (en remplacement de la diagonale principale). Les matrices de transformation U et VT sont renvoyées comme suit : l'algorithme prend en entrée deux variables, U et VT. La variable U contient une matrice de NRU lignes et N colonnes, multipliée à droite par la matrice de transformation U. La variable VT contient une matrice de N lignes et NCVT colonnes, multipliée à gauche par la matrice de transformation VT.

Ainsi, si l'on connaît les vecteurs singuliers d'une matrice bidiagonale, on peut obtenir les vecteurs singuliers d'une matrice quelconque (si l'on connaît les matrices qui la transforment en matrice bidiagonale). Si les vecteurs singuliers ne sont pas nécessaires, NRU et NCVT doivent être nuls.

Le paramètre IsFractionalAccuracyRequired contrôle la précision de la recherche des valeurs singulières. S'il est défini sur True, les valeurs singulières seront calculées avec la même erreur relative ; sinon, elles seront calculées avec la même erreur absolue. Il est généralement recommandé d'utiliser la valeur False (ce qui peut accélérer l'algorithme), car dans la plupart des applications, une précision accrue des petites valeurs singulières est inutile.



Dernière mise à jour : Samedi, le 14 février 2026