Published February 6, 2026 | Version 2.0
Software Open

Low-rank Sylvester ADI Implementations

  • 1. ROR icon Leipzig University of Applied Sciences

Description

Low-rank Sylvester ADI Implementations (v2.0)

This package contains implementations of the the low-rank Sylvester ADI iteration (LR-ADI) to approximately solve large-scale Sylvester equations

 A*X*C + M*X*B = -f*g'

with n x n matrices A,M,  m x m matrices B,C, and f is n x r, g is m x r with  r<<min(n,m). M,C can be identity matrices for standard Sylvester equations.
The spectra (A,M), (B,C) should not intersect and have eigenvalues only in the left or right half plane. 
The package also provides solvers for some special cases (cross-Gramian Sylv. eqns, Lyapunov eqns. with unsymmetric rhs, discrete-time Lyapunov eqns). 

 

Getting Started

Dependencies

MATLAB R2017b and above with the System Control Toolbox. Or Octave 4.0.0 and above with the Control Package. 
The data-files of one demo can be downloaded at mor-wiki.
The M-M.E.S.S. package (https://www.mpi-magdeburg.mpg.de/projects/mess) is not required but can be used to generate some matrices from scratch.

Installation

For using this software, you have to add the folder containing this file to the MATLAB/Octave search path.

Usage

  • The main routine is lr_adi_sylv.m which implements the (inexact) low-rank Sylvester ADI iteration.  It has several settings to stear the iterative solution process of the arising linear system (which solver/preconditioner, how to set stopping criteria,....).
  • lr_adi_sylv_ex_cpx.m is a much simpler ['exact'] version which only uses direct linear solves with the backslash '\'. These two methods will generate complex low-rank factors, if some of the ADI shift parameters were complex.
  • lr_adi_sylv_ex_real.m also uses direct linear solves only, but generates real low-rank factors (provided the sets of shifts are in a suitable ordering). Note the sign-changes in the equation! This version does not yet support inexact linear solves.
  • The following modifications handle specials cases of the Sylvester equations. They currently all use direct linear solves only, but generate real low-rank factors (provided the set of shifts is closed under conjugation).
    • lr_adi_crossgram_r.m solves the cross-Gramian Sylvester equations A*X*M + M*X*A = -f*g',
    • lr_adi_ulyap_r.m solves a Lyapunov equation with unsymmetric right hand side A*X*M' + M*X*A' = f*g'
    • lr_adi_dlyap_r.m solves a discrete-time Lyapunov equation (symmetric Stein equation) A*X*A' - M*X*A' = -f*g'
  • 'demo0.m' shows the basic usage of all the Sylvester ADI versions on an example.
    'demo1.m' illustrates some more finer settings with respect to the inexact solves.
    'demo2.m' to 'demo4.m' run further examples for (generalized) Sylvester equations. 'demo4.m' requires a dataset from https://zenodo.org/records/10017861
    demo5.m showcases the LR-ADI solvers for the special cases 
  • The other '*.m' files contain further routines needed to run the main algorithms. This includes routines for basic ADI shift generation strategies and basic Arnoldi-routines for Ritz value generation.

Please see the comments / help texts for 'lr_adi_sylv.m, lr_adi_sylv_ex_clx.m, lr_adi_sylv_ex_real.m' (and the special lr_adi_....m solvers) plus the demos on the usage and possible input parameters. Note the signs of the terms in the different types of Sylvester equations.
For problems defined by real coefficient matrices allowing efficient direct solves, lr_adi_sylv_ex_real.m is the way to go. If not, the inexact version lr_adi_sylv.m might be faster (but might give complex results if the coefficient are unsymmetric). Adequate preconditioners need to be available in that case.

Authors

Patrick Kürschner

  • affiliation: University of Applied Sciences Leipzig (HTWK Leipzig)
  • email: patrick.kuerschner@htwk-leipzig.de
  • orcid: 0000-0002-6114-8821

License

Copyright (C) 2024 Patrick Kürschner

The software is licensed under the BSD-2-Clause License. See COPYING for a copy of the license.

Citation

DOI

The DOI for version 2.0 is  10.5281/zenodo.18472113

BibTeX

@MISC{Kuersch_Sylvester_ADI,
  author = {K{\"u}rschner, P.},
  title  = {Low-rank Sylvester ADI Implementations (v2.0)},
  year   = 2026,
  doi    = {10.5281/zenodo.18472113}
}

Acknowledgements

Earlier parts of the development of this work (esp. the exact ADI + its variants) was supported by Max Planck Society during the time of the author's affiliation with the Max Planck Institute for Dynamics of Complex Technical System, Magdeburg, Germany; 

Version History

  • v1.0: low-rank Sylvester ADI with direct solver (complex and real version) and inexact inner solver (only complex)
  • v2.0: minor bugfixes in real lr_adi_sylv. Added solvers for three kinds of special Sylvester equations.

 

Files

Files (41.1 MB)

Name Size Download all
md5:90f2254cb0cbe2a6a51b6b59089261ef
1.6 kB Download
md5:ed193f2c9f8e979e7d99c5b8ab8c9c62
1.1 kB Download
md5:a70386344b4811628c2135e1283fdabd
1.7 kB Download
md5:facefb396b01c4776f0177d5cba84cb7
1.8 kB Download
md5:8d619e99ef92b6d269d870e71b600e82
6.0 kB Download
md5:6c658d47b8dc986a12f43d24a253712d
1.8 MB Download
md5:d8113b1a0218eaf9e35a6b179e31fef6
5.8 kB Download
md5:62dc3b5375a786247f359abd73f03270
7.7 MB Download
md5:7020f6217a86529a6ecc2210aea431e7
5.3 kB Download
md5:47af847a61bb6e2e29d6951146e2830b
24.3 MB Download
md5:f3d263c7e041c7b42838a01363928907
4.6 kB Download
md5:8d51295eb01349ff655fbcdc026d11de
7.3 MB Download
md5:028199d802486436422652fe6f8812b5
5.8 kB Download
md5:cce89e46de79e6ea10c3fcaa753f7f89
2.1 kB Download
md5:399ae45e181f3a360a31fcd0d7ce2e75
4.5 kB Download
md5:89c1193ef07cc626b58f4e30d414ed00
4.3 kB Download
md5:17479e61820c24c43a5bfa1eaf3b0352
12.2 kB Download
md5:75b7e3d19ea53099e5ec48cd43e5d3a1
4.4 kB Download
md5:42ea5e6921f1ef80bef720bb6ff849ae
6.3 kB Download
md5:2943889a99f38e8ee9b6db237938b231
4.4 kB Download
md5:98398d01237732e66755b667f8110c97
815 Bytes Download
md5:5c41f69caf8e21818330cb3b36bcfa27
1.6 kB Download
md5:56996929512329f2e488d7edf9ae8c80
1.6 kB Download
md5:a18a9c48f4c0ef82b20dc12b3fb9f11c
8.5 kB Download
md5:8701009f8285c2c1443e385e8c3ab210
2.6 kB Download

Additional details

Related works

Continues
Publication: 10.1016/j.camwa.2014.03.004 (DOI)
Publication: 10.1016/j.cam.2009.08.108 (DOI)
Is described by
Publication: 10.1553/etna_vol62s119 (DOI)

Software

Programming language
MATLAB

References

  • P. Kürschner: INEXACT LINEAR SOLVES IN THE LOW-RANK ADI ITERATION FOR LARGE SYLVESTER EQUATIONS PATRICK KÜRSCHNER, ETNA, 62:119-137 2024