PDF
\(\newcommand{\footnotename}{footnote}\) \(\def \LWRfootnote {1}\) \(\newcommand {\footnote }[2][\LWRfootnote ]{{}^{\mathrm {#1}}}\) \(\newcommand {\footnotemark }[1][\LWRfootnote ]{{}^{\mathrm {#1}}}\) \(\let \LWRorighspace \hspace \) \(\renewcommand {\hspace }{\ifstar \LWRorighspace \LWRorighspace }\) \(\newcommand {\mathnormal }[1]{{#1}}\) \(\newcommand \ensuremath [1]{#1}\) \(\newcommand {\LWRframebox }[2][]{\fbox {#2}} \newcommand {\framebox }[1][]{\LWRframebox } \) \(\newcommand {\setlength }[2]{}\) \(\newcommand {\addtolength }[2]{}\) \(\newcommand {\setcounter }[2]{}\) \(\newcommand {\addtocounter }[2]{}\) \(\newcommand {\arabic }[1]{}\) \(\newcommand {\number }[1]{}\) \(\newcommand {\noalign }[1]{\text {#1}\notag \\}\) \(\newcommand {\cline }[1]{}\) \(\newcommand {\directlua }[1]{\text {(directlua)}}\) \(\newcommand {\luatexdirectlua }[1]{\text {(directlua)}}\) \(\newcommand {\protect }{}\) \(\def \LWRabsorbnumber #1 {}\) \(\def \LWRabsorbquotenumber "#1 {}\) \(\newcommand {\LWRabsorboption }[1][]{}\) \(\newcommand {\LWRabsorbtwooptions }[1][]{\LWRabsorboption }\) \(\def \mathchar {\ifnextchar "\LWRabsorbquotenumber \LWRabsorbnumber }\) \(\def \mathcode #1={\mathchar }\) \(\let \delcode \mathcode \) \(\let \delimiter \mathchar \) \(\def \oe {\unicode {x0153}}\) \(\def \OE {\unicode {x0152}}\) \(\def \ae {\unicode {x00E6}}\) \(\def \AE {\unicode {x00C6}}\) \(\def \aa {\unicode {x00E5}}\) \(\def \AA {\unicode {x00C5}}\) \(\def \o {\unicode {x00F8}}\) \(\def \O {\unicode {x00D8}}\) \(\def \l {\unicode {x0142}}\) \(\def \L {\unicode {x0141}}\) \(\def \ss {\unicode {x00DF}}\) \(\def \SS {\unicode {x1E9E}}\) \(\def \dag {\unicode {x2020}}\) \(\def \ddag {\unicode {x2021}}\) \(\def \P {\unicode {x00B6}}\) \(\def \copyright {\unicode {x00A9}}\) \(\def \pounds {\unicode {x00A3}}\) \(\let \LWRref \ref \) \(\renewcommand {\ref }{\ifstar \LWRref \LWRref }\) \( \newcommand {\multicolumn }[3]{#3}\) \(\require {textcomp}\) \(\newcommand {\veclistbf }[3]{\mbf {#1}_{#2}, \ldots , \mbf {#1}_{#3}}\) \(\newcommand {\svdmat }[1]{ \left ( \begin {array}{cc} 0 & #1 \\ #1^* & 0 \end {array} \right )}\) \(\newcommand {\numlist }[3]{#1=#2, \ldots , #3}\) \(\newcommand {\diaglist }[3]{\diag ({#1}_{#2},\ldots ,{#1}_{#3})}\) \(\newcommand {\normt }[1]{\|#1\|}\) \(\newcommand {\normF }[1]{\|#1\|_F}\) \(\newcommand {\cmat }[2]{{\bf C}^{#1 \times #2}}\) \(\newcommand {\ysqrt }[1]{\left ( #1 \right )^{1/2}}\) \(\newcommand {\ysqrtn }[1]{\left (#1 \right )^{-1/2}}\) \(\newcommand {\mat }[2]{\Real ^{#1 \times #2}}\) \(\newcommand {\rvec }[1]{\Real ^#1}\) \(\newcommand {\normtwo }[1]{\|#1\|_2}\) \(\newcommand {\normtwol }[1]{\left \|#1 \right \|_2}\) \(\newcommand {\normFl }[1]{\left \|#1 \right \|_F}\) \(\newcommand {\norminf }[1]{\|#1\|_{\infty }}\) \(\newcommand {\normal }[1]{#1^T\!~#1}\) \(\newcommand {\co }[2]{#1\colon #2}\) \(\newcommand {\gbf }[1]{\mbox {\boldmath {$#1$}}}\) \(\newcommand {\eqref }[1]{{\normalfont (\ref {#1})}}\) \(\newcommand {\matgen }[2]{(\mbf {#1}_1, \ldots , \mbf {#1}_{#2} )}\) \(\newcommand {\veclist }[3]{#1_{#2}, \ldots , #1_{#3}}\) \(\newcommand {\XXT }[1]{#1#1^T}\) \(\newcommand {\macheps }{\varepsilon _M}\) \(\newcommand {\bear }{\left (\begin {array}}\) \(\newcommand {\enar }{\end {array}\right )}\) \(\newcommand {\bigosquare }{\mathcal O(\eps ^2)}\) \(\newcommand {\hot }{+ {\mathcal O(\macheps ^2 )}}\) \(\newcommand {\ciut }{+ {\mathcal O(\macheps )}}\) \(\newcommand {\Real }{\mbf {R}}\) \(\newcommand {\range }{\mathrm {Range}}\) \(\newcommand {\mbf }{\mathbf }\) \(\newcommand {\tbf }{\textbf }\) \(\newcommand {\sign }{\mathrm {sign}}\) \(\newcommand {\lbrac }{\mathrm {[}}\) \(\newcommand {\rbrac }{\mathrm {]}}\) \(\newcommand {\what }{\widehat }\) \(\newcommand {\wtilde }{\widetilde }\) \(\newcommand {\fbf }[1]{$\mbf {#1}$}\) \(\newcommand {\mcO }[1]{\mathcal {O}(#1)}\) \(\newcommand {\nth }[1]{$#1$th}\) \(\newcommand {\st }[1]{$#1$st}\)

Deflation for the Half-Arrow Singular Value Decomposition

Jesse L. Barlow, Stanley Eisenstat, Nevena Jakovčević Stor, and Ivan Slapničar

Abstract

A half-arrow matrix \(F\) has the form

\begin{eqnarray} F &= &\bear {cc} \Psi & \mbf {g} \\ \mbf {0}^T & \rho \enar ,\quad \mbf {g} \in \rvec {n},\quad \rho \in \Real , \label {eq:Fdef} \\ \Psi &=&\mathrm {diag}(\psi _1, \ldots ,\psi _n), \quad \psi _1 \geq \psi _2 \geq \ldots \geq \psi _n \geq 0 . \label {eq:psij} \end{eqnarray}

We consider the problem of determining which of the diagonals of \(\Psi \) are close to singular values of \(F\) and how these values can be deflated efficiently. Such deflation techniques were explored in the “conquer” stage of the divide-and-conquer bidiagonal SVD algorithms given by Jessup and Sorensen [9] and Gu and Eisenstat [7].

A version of the algorithm in [9] is coded in the LAPACK [1] subroutine dlasd2.f [10] as a part of the bidiagonal SVD subroutine dbdsbc.f [1, p.208].

The SVD version of the Cauchy interlace theorem [6, Corollary 8.6.3] states that the singular values \(\veclist {\sigma }{1}{n+1}\) of \(F\) satisfy

\begin{equation} \sigma _j \geq \psi _j \geq \sigma _{j+1}, \quad \numlist {j}{1}{n}. \label {eq:interlace} \end{equation}

Interpretating a result in [13, p.95], Jessup and Sorensen [9] point to three cases where \(\psi _j\) is a singular value of \(F\):

In all three cases, the computation of the SVD of \(F\) is reduced to that of computing the SVD of a lower dimensional half-arrow matrix. If none of these deflations is possible for any \(j\), then from [13, p.95], we have the strict interlacing property

\begin{equation} \sigma _j > \psi _j > \sigma _{j+1}, \quad \numlist {j}{1}{n}. \label {eq:sinterlaceF} \end{equation}

The deflation strategies in [9, 7] are based upon the idea that one of these three cases applies to a matrix near \(F\). We model these strategies as follows: we compute a value \(\gamma _F\) such that \(\normtwo {F}\leq \gamma _F \leq \sqrt {2}\normtwo {F}\), and let \(\tau \) be a small value, usually \(\mcO {\macheps }\) where \(\macheps \) is the machine unit. In some applications, \(\tau \) may be an acceptable level of error.

Corresponding to the three cases for when \(\psi _j\) is a singular value of \(F\), we can deflate \(g_j\) in the following three cases:

The deflations (5) and (8) are discussed in [9, 7] and the deflation (6) is discussed in [9].

We enhance the appproach in [9, 7] and in the LAPACK routine dlasd2.f [10] by producing a better deflation algorithm that is still \(\mcO {n}\) operations. We also show that if for a particular value of \(j\), \(g_j\) cannot be deflated by (5) or by (6) or by (8) for any \(i \neq j\), then

\begin{equation} \sigma _j -\sigma _{j+1} > \tau \gamma _F/\sqrt {2n+1}. \label {eq:perfectseparation} \end{equation}

However, the only algorithm we give with that guarantee for all \(j\) has a worst case complexity proportional to \(n^2\). If we weaken these conditions, so that there is no index \(i\) such that \(|i-j| < q\), and we have (8), then

\begin{equation} \sigma _j -\sigma _{j+1} > \sqrt {2}\tau ^2 q \gamma _F + \mcO {\tau ^4 q^2 \gamma _F}. \label {eq:neighborseparation} \end{equation}

The algorithm we recommend is a hueristic proposed here with worst case complexity proportional to \(n\), the same asymtotic complexity as the LAPACK procedure, but with better deflation guarantees. It acheives (10) with \(q=2\) for all \(j\). Bounds similar to (9) and (10) are not possible for the singular values of deflated structure matrices, for instance, there are no such bounds for bidiagonal matrices.

In light of work by Demmel and Gragg [4] that formulated an algorithm to compute the nonzero singular values of \(F\) to near relative accuracy, we formulate and analyze versions of the deflations in (5) and (8) that preserve relative accuracy in the singular values.

By choosing \(\gamma _F\) to be within a constant factor of \(\normtwo {F}\), these deflations produce no more error in the singular values than would be expected of a normwise backward stable algorithm for finding the SVD of \(F\). However, for algorithms to compute the SVD of \(F\), deflation gives us dimension reduction and speeds up the algorithms in [9] and [7]. The LAPACK routine dlasd2.f uses only the first and third types of deflation.

Two other applications for this kind of deflation have been investigated. The first is in is SVD-based regularization approaches given in [8, §4.3] and [11]. The second is in the implementation of a Krylov-Schur implementation [2, 12] of the Golub-Kahan-Lanczos SVD algorithm [5].

This is a continuation of work in [3].

References