# rank_nullspace¶

quantecon.rank_nullspace.nullspace(A, atol=1e-13, rtol=0)[source]

Compute an approximate basis for the nullspace of A.

The algorithm used by this function is based on the singular value decomposition of A.

Parameters:
Aarray_like(float, ndim=1 or 2)

A should be at most 2-D. A 1-D array with length k will be treated as a 2-D with shape (1, k)

atolscalar(float), optional(default=1e-13)

The absolute tolerance for a zero singular value. Singular values smaller than atol are considered to be zero.

rtolscalar(float), optional(default=0)

The relative tolerance. Singular values less than rtol*smax are considered to be zero, where smax is the largest singular value.

Returns:
nsarray_like(float, ndim=2)

If A is an array with shape (m, k), then ns will be an array with shape (k, n), where n is the estimated dimension of the nullspace of A. The columns of ns are a basis for the nullspace; each element in numpy.dot(A, ns) will be approximately zero.

Note: If both atol and rtol are positive, the combined tolerance
is the maximum of the two; that is:

tol = max(atol, rtol * smax)

Note: Singular values smaller than tol are considered to be zero.
quantecon.rank_nullspace.rank_est(A, atol=1e-13, rtol=0)[source]

Estimate the rank (i.e. the dimension of the nullspace) of a matrix.

The algorithm used by this function is based on the singular value decomposition of A.

Parameters:
Aarray_like(float, ndim=1 or 2)

A should be at most 2-D. A 1-D array with length n will be treated as a 2-D with shape (1, n)

atolscalar(float), optional(default=1e-13)

The absolute tolerance for a zero singular value. Singular values smaller than atol are considered to be zero.

rtolscalar(float), optional(default=0)

The relative tolerance. Singular values less than rtol*smax are considered to be zero, where smax is the largest singular value.

Returns:
rscalar(int)

The estimated rank of the matrix.

Note: If both atol and rtol are positive, the combined tolerance
is the maximum of the two; that is:

tol = max(atol, rtol * smax)

Note: Singular values smaller than tol are considered to be zero.

See also

numpy.linalg.matrix_rank

matrix_rank is basically the same as this function, but it does not provide the option of the absolute tolerance.