This method computes the dimension of the kernel of a matrix with real or complex entries numerically, via singular value decomposition (see SVD).
If σ1 ≥...≥σn are the singular values of M, then to establish numerical nullity 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.
The optional input Precondition specifies whether or not the rows of M will be normalized to have norm 1 before computing the SVD. This is useful if the matrix is dense (e.g. for an interpolation matrix), but not if the matrix is sparse (e.g. diagonal).
i1 : numericalNullity(matrix{{2, 1}, {0, 0.001}}, Precondition => false) o1 = 1 |
i2 : numericalNullity(map(CC^2,CC^2,0)) o2 = 2 |