Bartels–Stewart algorithm

From The Right Wiki
Jump to navigationJump to search

In numerical linear algebra, the Bartels–Stewart algorithm is used to numerically solve the Sylvester matrix equation AXXB=C. 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 A and B to transform AXXB=C 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 X is of small to moderate size.

The algorithm

Let X,Cm×n, and assume that the eigenvalues of A are distinct from the eigenvalues of B. Then, the matrix equation AXXB=C has a unique solution. The Bartels–Stewart algorithm computes X by applying the following steps:[2] 1.Compute the real Schur decompositions

R=UTAU,
S=VTBTV.

The matrices R and S are block-upper triangular matrices, with diagonal blocks of size 1×1 or 2×2. 2. Set F=UTCV. 3. Solve the simplified system RYYST=F, where Y=UTXV. This can be done using forward substitution on the blocks. Specifically, if sk1,k=0, then

(RskkI)yk=fk+j=k+1nskjyj,

where yk is the kth column of Y. When sk1,k0, columns [yk1yk] should be concatenated and solved for simultaneously. 4. Set X=UYVT.

Computational cost

Using the QR algorithm, the real Schur decompositions in step 1 require approximately 10(m3+n3) flops, so that the overall computational cost is 10(m3+n3)+2.5(mn2+nm2).[2]

Simplifications and special cases

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

The Hessenberg–Schur algorithm

The Hessenberg–Schur algorithm[2] replaces the decomposition R=UTAU in step 1 with the decomposition H=QTAQ, where H is an upper-Hessenberg matrix. This leads to a system of the form HYYST=F that can be solved using forward substitution. The advantage of this approach is that H=QTAQ can be found using Householder reflections at a cost of (5/3)m3 flops, compared to the 10m3 flops required to compute the real Schur decomposition of A.

Software and implementation

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

For large systems, the 𝒪(m3+n3) cost of the Bartels–Stewart algorithm can be prohibitive. When A and B 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 X when solving AXXB=C.

References

  1. 1.0 1.1 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. 2.0 2.1 2.2 2.3 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.