How can I efficiently find a matrix $P_A$ that projects onto the kernel of another matrix $A$? That is, given $Ax=0$, is there an "efficient" (without using inverses) way to find $P_A$ such that $P_A x \in ker(A)$, i.e., $A(P_A y) = 0$ for $Ay \neq 0$?
I know that I can do this with the orthogonal projection $Q_A := I - A^{\dagger}A$ for $A^{\dagger} = A^T(AA^T)^{-1}$ when $A$ has full row rank or $A^{\dagger} = (A^TA)^{-1}A^T$ when $A$ has full column rank, but I'm interested in other projections onto $ker(A)$ where we're not required to compute the pseudoinverse because of two reasons
- SVD of $A^TA$ or $AA^T$ might be too expensive or unreliable (because of size or poorly conditioning, respectively)
- $A$ might be rank deficient (not have full row rank or full column rank)
In these cases, what's the best way to project onto the kernel of $A$? I imagine that we must rely on knowing something about the structure of $A$.