I have an $n \times n$ unsymmetric matrix $A$ that results from the discretization of an ill-posed Poisson problem, and thus is rank-deficient with null space of dimension one. I want to compute just the smallest singular triplet
\begin{equation*} (u_n,\sigma_n,v_n) \end{equation*}
where
\begin{equation*} u_n^T A v_n = \sigma_n = 0. \end{equation*}
I have found, through some experimentation, that applying inverse iteration to the shifted (and thus full-rank) matrix $A^T - \sigma I$ yields the left singular vector very quickly, often in one or two iterations. In Matlab code:
x(:,1) = rand(n,1);
for k = 1:MAXIT
x(:,k+1) = ( A' - sigma*eye(n) )\x(:,k);
x(:,k+1) = x(:,k+1)/norm(x(:,k+1));
end
Usually, this iteration converges to small enough tolerances ($|| x_k^T A|| = 10^{-9}$ or so) in one or two iterations.
I think this converges so rapidly because the largest and second largest singular values of $(A^T - \sigma I)^{-1}$ are spaced by $\sigma^{-1}$ which can be made large, but I have not been able to prove that this inverse iteration should converge. I'm sure there is some clever way of using the SVD to show this convergence as in the standard proof of the equivalent inverse iteration for the eigenvectors, but I can't come up with it.
Any help, ideas, or thoughts on why this works, and how I could prove this works would be helpful.