numericalRank finds an approximate rank of the matrix M.
isFullNumericalRank = M is _not_ rank-deficient.
Let σ1,...,σn be the singular values of M.
If Threshold is >1, then to establish numerical rank we look for the first large gap between two consecutive singular values. The gap between σi and σi+1 is large if σi/σi+1 > Threshold.
If Threshold is <=1, then the rank equals the number of singular values larger then Threshold.
i1 : numericalRank matrix {{2,1},{0,0.001}} o1 = 2 |