I'm looking at a paper which uses the singular value decomposition to compute the null space of a matrix $A$.
$A$ is constructed such that, according to the author of the paper, "While measurement noise usually makes $A$ full rank, one singular value is always much smaller than the others. Therefore, the solution is found by taking the singular value decomposition of $A$ $$A = UDV^T$$ and finding the column of V corresponding to the smallest singular value."
I've built a simulation (using numpy's svd method) which tends to report that the last few singular values are all about the same order of magnitude, ~1e-16. I've also found an example where the last two singular values are equal.
But if the last few singular values are all the same order of magnitude (or even are equal), should the solution to the problem actually be some linear combination of the corresponding columns?
I suppose the problem might be the algorithm numpy is using to compute the SVD — that it's running into some numerical precision problem because some columns of $A$ are linearly independent but not to machine precision. In this case, is there a simple numerical workaround?
The solution using SVD states using the $4$ Fundamental subspaces that that the null space of $A$ is given by the last $n-r$ columns of $V$, where $r$ is the rank of $A$ and $A$ is of dimension $n\times n$, if rank is full then $r=n$ and you have only the trivial sution.