When m = 1, linear systems can be solved quickly, in O(n3) flops. When m > 1, fast direct algorithms are impossible. However, due to the Kronecker structure, matrix-vector products on A can be computed quickly, in only 4 m2 n3 flops. Thus, it seems reasonable to try an iterative method. The success of iterative methods depends on the quality of the preconditioners used.
We considered the case when A is SPD. We have developed a preconditioners which cluster the eigenvalues of the preconditioned matrix into the interval (0, 1]. Conjugate Gradients using our preconditioners can solve systems on A in O(m2 n3) flops, which is of the same order as matrix-vector products on A.
Our algorithm is explained in [1]. The Matlab code is given below. It is also available as a zip file.
If you have any questions about the code, please e-mail me.
Last updated 13 August 2001.