Given $X$ a block matrix
$$\pmatrix{A&B}$$
where $A$ is $m \times n$ and $B$ is $m \times (n−m)$.
I know a priori the value of $X \times (X^{T} \times X)^{-1}$.
Substituting $X$:
$$\pmatrix{A&B} \times \pmatrix{A^{T}A&A^{T}B\\B^{T}A&B^{T}B}^{-1}$$
I want to obtain the value of $A \times (A^{T} \times A)^{-1}$.
I have tried many articles and tools, for instance,
http://en.wikipedia.org/wiki/Block_matrix_pseudoinverse
and the Matrix Inversion Lemma, but I did not managed to find a solution.
Any ideas? Thank you!
Your $X$ is square and you have the pseudo-inverse for it. Or in this case a left inverse. Well for a square matrix this is just the inverse. So I am going to answer the question of how to obtain the pseudo-inverse of a sub-portion of columns of a square matrix given the inverse for that matrix.
Knowns: $$\pmatrix{A & B} = X$$ $$X^{-1} = \pmatrix{C \\ D}$$ so that $X^{-1}X = I$ gives $$CA = I$$ a left inverse for the $A$ column matrix. Given a general (left) inverse, for it to be the pseudo-inverse, it need be that $C^\top$ has the same column span as $A$ (see my profile page for a link where I show this about the pseudo-inverse). This will not be true in general, so we use the other rows of the inverse ($D$ with $DA = \mathbf{0}$) to make it happen. If $C^\top$ shared the same span as $A$, then because $D$ is the complementary space to $A$ then we would have $C^\top D = \mathbf{0}$. Thus the problem of finding the pseudo-inverse for $A$ given $X^{-1}$ is equivalent to orthogonalizing the rows of $C$ against the rows of $D$.
I apologize if my description is not perfectly understandable, so let me try some precise code. My code habit is python, let the matrix $X$ as x be a list of lists, and x_i the inverse. The function dot() is the obvious one (dot product):
This will result in the pseudo-inverse in the first $n$ rows of the (now altered) inverse. This is less computation that finding the pseudo-inverse from scratch.