The MATLAB code in this repository was used to produce the figures and tables in [sect. 4, 1]. The test suite was developed in MATLAB 2020b, and the experiments were run in MATLAB 2021b on a machine equipped with an AMD Ryzen 7 PRO 5850U and 32 GiB of RAM.
The code in this repository requires the MATLAB randsvdfast
function from the randsvdfast-matlab GitHub repository. This is included as a git submodule for convenience and can be cloned with
git submodule init
from the command line.
The experiments can be reproduced by running the MATLAB script run_tests
which executes the following scripts in the tests
folder:
test_sylv
, which produces the data used in [Figure 1, 1];test_gensylv
, which produces the data used in [Figure 2, 1]; andtest_large_gensylv
, which produces the data used in [Table 2, 1]. The actual tests are performed by the functions with the_case_fun
suffix, also in thetests
folder, which generate the matrix equations for a given choice of parameters, solve them, and store the output in an array ofstruct
s.
The algorithms we consider are implemented by the MATLAB functions in the algorithms
folder:
solve_cgkr
, which solves a generalized Sylvester equation with Hermitian positive definite coefficients using the unpreconditioned conjugate gradient method on the Kronecker form of the equation;solve_gen_dfpm
, which solves a generalized Sylvester equation using the dynamical functional particle method;solve_gen_gbia
, which solves a generalized Sylvester equation using the gradient based iterative algorithm of Ding and Chen [2];solve_gen_kron
, which solves a generalized Sylvester equation using MATLAB backslash operator on the Kronecker form of the matrix equation;solve_sylv_dfpm
, which solves a Sylvester equation using the dynamical functional particle method (this is a stripped-down variant ofsolve_gen_dfpm
); andsolve_sylv_dfpm_refinement
, which solves a Sylvester equation by using the dynamical functional particle method with the solution of the Bartels–Stewart algorithm as starting value for the iteration (this method is not reported as it is not competitive on our test test).
The matrix_generation
folder contains utility functions for generating test matrices with properties of interest.
[1] A. Dmytryshyn, M. Fasi, and M. Guliksson. The dynamical functional particle method for the generalized Sylvester equation. MIMS EPrint 2021.4, Manchester Institute for Mathematical Sciences, The University of Manchester, UK, February 2021. Revised December 2021.
[2] F. Ding and T. Chen. Gradient based iterative algorithms for solving a class of matrix equations. IEEE Transactions on Automatic Control, 50(8):1216-1221, 2005.
If you use the code in this repository, please cite the preprint [1].
This software is distributed under the terms of the Expat License (see LICENSE.md).