Algorithme de Bartels-Stewart

De testwiki
Aller à la navigation Aller à la recherche

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 AXXB=C.

Historique

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 A et B pour transformer l'équation AXXB=C 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 X est de taille petite ou moyenne.

L'algorithme

Soient X,Cm×n, et supposons que les valeurs propres de A sont distinctes des valeurs propres de B. L'équation matricielle AXXB=C a alors une solution unique. L'algorithme de Bartels-Stewart calcule X en appliquant les étapes suivantes[1] :

  1. Calculer les décompositions de Schur réelles :
    R=UTAU,
    S=VTBTV.
    Les matrices R et S sont des matrices triangulaires par blocs, avec des blocs diagonaux de taille 1 ou 2.
  2. Calculer F=UTCV.
  3. Résoudre le système simplifié
    RYYST=F,
    Y=UTXV. Pour cela, on peut utiliser la substitution avant par blocs. Concrètement, si sk1,k=0, alors on a :
    (Rsk,kI)yk=fk+j=k+1nsk,jyj,
    yk est la k-ième colonne de Y. Quand sk1,k0, les colonnes yk1 et yk doivent être concaténées et résolues simultanément.
  4. Calculer X=UYVT.

Coût du calcul

En utilisant l'algorithme QR, les décompositions réelles de Schur à l'étape 1 nécessitent environ 10(m3+n3) opérations flottantes, de sorte que le coût global du calcul global est : 10(m3+n3)+2,5(mn2+nm2)[2].

Simplifications et cas particuliers

Dans le cas particulier où B=AT et C est une matrice symétrique, la solution X est également symétrique. Cette symétrie peut être exploitée pour calculer Y plus efficacement à l'étape 3 de l'algorithme[1].

L'algorithme de Hessenberg-Schur

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

H=QTAQ,

H est une matrice de Hessenberg supérieure. Cela conduit à un système de la forme

HYYST=F

qui peut être résolu en utilisant la substitution directe. L'avantage de cette approche est que H=QTAQ peut être calculée en utilisant les réflexions de Householder au prix de (5/3)m3 flops, par rapport aux 10m3 flops nécessaires pour calculer la décomposition réelle de Schur de A.

Logiciel et implémentation

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

Pour les systèmes de grande taille, le coût en 𝒪(m3+n3) le coût de l'algorithme de Bartels-Stewart peut être prohibitif. Quand A et B 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 à X lors de la résolution AXXB=C.

Notes et références

Modèle:Traduction/référence Modèle:Références

Modèle:Portail