Bartels–Stewart algorithm

In numerical linear algebra, the Bartels–Stewart algorithm is used to numerically solve the Sylvester matrix equation . Developed by R.H. Bartels and G.W. Stewart in 1971,[1] it was the first numerically stable method that could be systematically applied to solve such equations. The algorithm works by using the real Schur decompositions of and to transform into a triangular system that can then be solved using forward or backward substitution. In 1979, G. Golub, C. Van Loan and S. Nash introduced an improved version of the algorithm,[2] known as the Hessenberg–Schur algorithm. It remains a standard approach for solving Sylvester equations when is of small to moderate size.

The algorithm

edit

Let  , and assume that the eigenvalues of   are distinct from the eigenvalues of  . Then, the matrix equation   has a unique solution. The Bartels–Stewart algorithm computes   by applying the following steps:[2]

1.Compute the real Schur decompositions

 
 

The matrices   and   are block-upper triangular matrices, with diagonal blocks of size   or  .

2. Set  

3. Solve the simplified system  , where  . This can be done using forward substitution on the blocks. Specifically, if  , then

 

where   is the  th column of  . When  , columns   should be concatenated and solved for simultaneously.

4. Set  

Computational cost

edit

Using the QR algorithm, the real Schur decompositions in step 1 require approximately   flops, so that the overall computational cost is  .[2]

Simplifications and special cases

edit

In the special case where   and   is symmetric, the solution   will also be symmetric. This symmetry can be exploited so that   is found more efficiently in step 3 of the algorithm.[1]

The Hessenberg–Schur algorithm

edit

The Hessenberg–Schur algorithm[2] replaces the decomposition   in step 1 with the decomposition  , where   is an upper-Hessenberg matrix. This leads to a system of the form   that can be solved using forward substitution. The advantage of this approach is that   can be found using Householder reflections at a cost of   flops, compared to the   flops required to compute the real Schur decomposition of  .

Software and implementation

edit

The subroutines required for the Hessenberg-Schur variant of the Bartels–Stewart algorithm are implemented in the SLICOT library. These are used in the MATLAB control system toolbox.

Alternative approaches

edit

For large systems, the   cost of the Bartels–Stewart algorithm can be prohibitive. When   and   are sparse or structured, so that linear solves and matrix vector multiplies involving them are efficient, iterative algorithms can potentially perform better. These include projection-based methods, which use Krylov subspace iterations, methods based on the alternating direction implicit (ADI) iteration, and hybridizations that involve both projection and ADI.[3] Iterative methods can also be used to directly construct low rank approximations to   when solving  .

References

edit
  1. ^ a b Bartels, R. H.; Stewart, G. W. (1972). "Solution of the matrix equation AX + XB = C [F4]". Communications of the ACM. 15 (9): 820–826. doi:10.1145/361573.361582. ISSN 0001-0782.
  2. ^ a b c d Golub, G.; Nash, S.; Loan, C. Van (1979). "A Hessenberg–Schur method for the problem AX + XB= C". IEEE Transactions on Automatic Control. 24 (6): 909–913. doi:10.1109/TAC.1979.1102170. hdl:1813/7472. ISSN 0018-9286.
  3. ^ Simoncini, V. (2016). "Computational Methods for Linear Matrix Equations". SIAM Review. 58 (3): 377–441. doi:10.1137/130912839. hdl:11585/586011. ISSN 0036-1445. S2CID 17271167.