Is there an iterative procedure that pushes the singular values of a matrix toward unity?

245 Views Asked by At

Consider a square matrix $A = U \Sigma V^T$. I want to find $B = UV^T$ — however, it seems wasteful to compute the whole SVD just to re-multiply the two orthogonal matrices.

Does there exist some stable procedure I can use to "push" the entries in the diagonal matrix $\Sigma$ toward ones?

2

There are 2 best solutions below

2
On BEST ANSWER

Set $A_0=A$ and $A_n = (1/2)(A_{n-1}+(A_{n-1}^T)^{-1})$. I claim $A_n \to UV$, and does so rapidly.

Define $f(x) = \frac{x+x^{-1}}{2}$. Suppose $A=UDV$ where the diagonal entries of $D$ are $\sigma_1$, $\sigma_2$, ..., $\sigma_k>0$. Then induction shows that $A_n = U D_n V$ where $D$ is diagonal with entries $f^{(n)}(\sigma_j)$. (Here $f^{(n)}$ means iterate $f$ for $n$ times.) For any $\sigma>0$, $f^{(n)}(\sigma) \to 1$, and does so quite rapidly: $|f^{(n)}(\sigma)-1|$ shrinks like $1/\exp(c \cdot 2^n)$.

Disclaimer: I have not tested this method.

4
On

David , 1. Note that $x\rightarrow (x+1/x)/2$ is the Newton iteration for the calculation of an approximation of $\sqrt{1}$. If $\sigma =1000\approx 2^{10}$, one needs more that $10$ iterations.

  1. What is the interest ? Each matricial iteration has complexity $\sim n^3$; compare with the cost of the calculation of the SVD (in $O(n^3)$) and the multiplication $UV^T$ ($\sim n^3$).

  2. The OP assumes (if I correctly understand his question) that the singular values are unknown. How do you write your iteration ? Anyway, the calculation of the singular values is also in $O(n^3)$.

  3. The couple $U,V$ is not unique but I think that $UV^T$ is unique.