Given a matrix, M, find a matrix N giving a basis for the
(left) null space. That is crossprod(N, M) = t(N) %*% M
is an all-zero matrix and N has the maximum number of linearly
independent columns.
Usage
Null(M)
Arguments
M
Input matrix. A vector is coerced to a 1-column matrix.
Value
The matrix N with the basis for the (left) null space, or a
matrix with zero columns if the matrix M is square and of
maximal rank.
Details
For a basis for the (right) null space
\(\{x : Mx = 0\}\),
use Null(t(M)).
References
Venables, W. N. and Ripley, B. D. (2002)
Modern Applied Statistics with S. Fourth edition. Springer.
# The function is currently defined asfunction(M)
{
tmp <- qr(M)
set <- if(tmp$rank == 0L) seq_len(ncol(M)) else -seq_len(tmp$rank)
qr.Q(tmp, complete = TRUE)[, set, drop = FALSE]
}