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 $$


1 Answer 1


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, 2017 at 18:41
  • $\begingroup$ @broncoAbierto: My apologies for my confusion. Allow me to readdress your question. $\endgroup$
    – dantopa
    Apr 4, 2017 at 20:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .