Given a rank-$n$ $m\times n$ real matrix $\boldsymbol{A}$ with singular value decomposition $$ \boldsymbol{A} = \boldsymbol{U}\boldsymbol{\Sigma} \boldsymbol{V}^T $$ and an $m \times k$ matrix $\boldsymbol{C}$ whose columns are a subset of the columns of $\boldsymbol{A}$, is there a way to obtain the Moore-Penrose generalized inverse of $\boldsymbol{C}$ efficiently, taking advantage of the fact that I have already computed the SVD of $\boldsymbol{A}$?

Note that if the SVD of $\boldsymbol{C}$ is $$ \boldsymbol{C} = \boldsymbol{U}'\boldsymbol{\Sigma}' (\boldsymbol{V}')^T $$ then the Moore-Penrose generalized inverse of $\boldsymbol{C}$ is $$ \boldsymbol{C}^+ = \boldsymbol{V}'(\boldsymbol{\Sigma}')^{-1}(\boldsymbol{U}')^T $$


The inputs are a full column rank matrix $\mathbf{A}^{m\times n}_{n}$ and its singular value decomposition: $$ \begin{align} \mathbf{A} &= \mathbf{U} \, \Sigma \, \mathbf{V}^{*} \\ % &= % U \left[ \begin{array}{cc} \color{blue}{\mathbf{U}_{\mathcal{R}}} & \color{red}{\mathbf{U}_{\mathcal{N}}} \end{array} \right] % Sigma \left[ \begin{array}{c} \mathbf{S}_{n\times n} \\ \mathbf{0} \end{array} \right] % V \left[ \begin{array}{c} \color{blue}{\mathbf{V}_{\mathcal{R}}}^{*} \end{array} \right] \\ % \end{align} $$ Colors distinguish $\color{blue}{range}$ spaces from $\color{red}{null}$ spaces.

Think of the input matrix as being column-partitioned like so $$ \mathbf{A} = \left[ \begin{array}{c|c} \mathbf{A}_{1} & \mathbf{A}_{2} \end{array} \right] $$

The question is that if we are given $\mathbf{A}$ and its singular value decomposition, can we use that to construct the singular value decomposition of $\mathbf{A}_{1}$?

Special case

The obvious special case is when we miraculously grab all the linearly independent columns in the range space $\color{blue}{\mathcal{R}\left( \mathbf{A} \right)}$: $$ \mathbf{A} = \left[ \begin{array}{c|c} \mathbf{A}_{1} & \mathbf{A}_{2} \end{array} \right] % = % \left[ \begin{array}{c|c} \color{blue}{\mathbf{U}_{\mathcal{R}}} & \color{red}{\mathbf{U}_{\mathcal{N}}} \end{array} \right] $$ In this case, we can construct the SVD and pseudoinverse from existing components. $$ \begin{align} % \mathbf{A}_{1} &= \color{blue}{\mathbf{U}_{\mathcal{R}}} \, \mathbf{S} \, \color{blue}{\mathbf{V}^{*}_{\mathcal{R}}}, \\ % \mathbf{A}_{1}^{+} &= \color{blue}{\mathbf{V}_{\mathcal{R}}} \, \mathbf{S}^{-1} \, \color{blue}{\mathbf{U}^{*}_{\mathcal{R}}}. \\ % \end{align} $$

  • 2
    $\begingroup$ But I don't know the SVD of C. $\endgroup$
    – cangrejo
    Apr 4 '17 at 18:41
  • $\begingroup$ @broncoAbierto: My apologies for my confusion. Allow me to readdress your question. $\endgroup$
    – dantopa
    Apr 4 '17 at 20:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.