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

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

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] :

  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.
  2. Calculer  
  3. Résoudre le système simplifié
     ,
     . Pour cela, on peut utiliser la substitution avant par blocs. Concrètement, si  , alors on a :
     
      est la  -ième colonne de  . Quand  , les colonnes   et   doivent être concaténées et résolues simultanément.
  4. Calculer  

Coût du calcul modifier

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

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

L'algorithme de Hessenberg–Schur[2] remplace la décomposition   de l'étape 1 par la décomposition

 ,

  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

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

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

  1. a b et c 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).
  2. a b et c 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).
  3. 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).