Subspace algorithms for the Crawford number computation.


These are MATLAB implementations of the subspace algorithms in [1] for computing the Crawford number of a matrix \(A\in \mathbb C^{n\times n}\), i.e., the distance of the numerical range \(\mathcal{F}(A)\) from zero:

\[ \gamma(A) = \min\{\, |z| \colon z\in \mathcal{F}(A)\, \},\qquad \mathcal{F}(A) = \{\, v^{*} A v \colon v\in \mathbb{C}^{n}, \|v\|_2=1\,\}. \]

To use crawfnos, the user can provide either a matrix \(A\), or a linear operator op with member functions: op.matvec, op.rmatvec, op.matmat to compute \(A\times x\), \(A^*\times x\) and \(A\times V\), for a vector \(x\in \mathbb C^{n}\) and matrix \(V\in \mathbb C^{n\times k}\), respectively.

All example data and routines used in the paper [1] are also included. For a detailed description of the usage of these routines, please check the readme files in the package.



  1. Subspace acceleration for the Crawford number and related eigenvalue optimization problems
    with Daniel Kressner and Bart Vandereycken,
    SIAM J. Matrix Anal. Appl., 2018. 39(2):961–982. (preprint, MATLAB code)