Algorithme de Bartels-Stewart
En algèbre linéaire numérique, l'algorithme de Bartels-Stewart est un algorithme utilisé pour résoudre numériquement l'équation de Sylvester .
Historique
[modifier | modifier le code]Développé par Richard Harold Bartels et Gilbert Wright Stewart en 1972[1], l'algorithme était la première méthode numériquement stable qui pouvait être systématiquement appliquée pour résoudre de telles équations. L'algorithme opère en utilisant les décompositions de Schur réelles de et pour transformer l'équation en un système triangulaire qui peut ensuite être résolu en utilisant la substitution avant ou arrière. En 1979, Gene H. Golub, Charles F. Van Loan et Stephen Nash ont introduit une version améliorée de l'algorithme[2] connue sous le nom d'algorithme de Hessenberg-Schur. La méthode de Bartels et Stewartt reste une approche standard pour résoudre les équations de Sylvester lorsque est de taille petite ou moyenne.
L'algorithme
[modifier | modifier le code]Soient , et supposons que les valeurs propres de sont distinctes des valeurs propres de . L'équation matricielle a alors une solution unique. L'algorithme de Bartels-Stewart calcule en appliquant les étapes suivantes[1] :
- Calculer les décompositions de Schur réelles :
- Les matrices et sont des matrices triangulaires par blocs, avec des blocs diagonaux de taille 1 ou 2.
- Calculer
- Résoudre le système simplifié
- ,
- où . Pour cela, on peut utiliser la substitution avant par blocs. Concrètement, si , alors on a :
- où est la -ième colonne de . Quand , les colonnes et doivent être concaténées et résolues simultanément.
- Calculer
Coût du calcul
[modifier | modifier le code]En utilisant l'algorithme QR, les décompositions réelles de Schur à l'étape 1 nécessitent environ opérations flottantes, de sorte que le coût global du calcul global est : [2].
Simplifications et cas particuliers
[modifier | modifier le code]Dans le cas particulier où et est une matrice symétrique, la solution est également symétrique. Cette symétrie peut être exploitée pour calculer plus efficacement à l'étape 3 de l'algorithme[1].
L'algorithme de Hessenberg-Schur
[modifier | modifier le code]L'algorithme de Hessenberg–Schur[2] remplace la décomposition de l'étape 1 par la décomposition
- ,
où est une matrice de Hessenberg supérieure. Cela conduit à un système de la forme
qui peut être résolu en utilisant la substitution directe. L'avantage de cette approche est que peut être calculée en utilisant les réflexions de Householder au prix de flops, par rapport aux flops nécessaires pour calculer la décomposition réelle de Schur de .
Logiciel et implémentation
[modifier | modifier le code]Les sous-programmes requis pour la variante Hessenberg-Schur de l'algorithme Bartels-Stewart sont implémentés dans la bibliothèque SLICOT. Ceux-ci sont utilisés dans la boîte à outils du système de contrôle MATLAB.
Approches alternatives
[modifier | modifier le code]Pour les systèmes de grande taille, le coût en le coût de l'algorithme de Bartels-Stewart peut être prohibitif. Quand et sont creuses ou structurées, de sorte que les résolutions linéaires et les multiplications vectorielles matricielles sont efficaces, les algorithmes itératifs peuvent être plus rapides. Ceux-ci incluent des méthodes basées sur la projection, qui utilisent des itérations Méthode itérative de sous-espace de Krylov, des méthodes basées sur l'itération implicite de direction alternée (ADI) et des hybridations qui impliquent à la fois la projection et l'ADI[3]. Des méthodes itératives peuvent également être utilisées pour construire directement des approximations de rang inférieur à lors de la résolution .
Notes et références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Bartels–Stewart algorithm » (voir la liste des auteurs).
- R. H. Bartels et G. W. Stewart, « Algorithm 432 : Solution of the matrix equation AX + XB = C [F4] », Communications of the ACM, vol. 15, no 9, , p. 820–826 (DOI 10.1145/361573.361582).
- Gene H. Golub, Stephen Nash et Charles F. Van Loan, « A Hessenberg–Schur method for the problem AX + XB= C », IEEE Transactions on Automatic Control, vol. 24, no 6, , p. 909–913 (DOI 10.1109/TAC.1979.1102170, hdl 1813/7472).
- Valeria Simoncini, « Computational Methods for Linear Matrix Equations », SIAM Review, vol. 58, no 3, , p. 377–441 (DOI 10.1137/130912839, hdl 11585/586011, S2CID 17271167).