R: Kernel or Nullspace

nullspace {pracma} | R Documentation

## Kernel or Nullspace

### Description

Kernel of the linear map defined by matrix `M`.

### Usage

    nullspace(M)
    null(M)

### Arguments

`M` | Numeric matrix; vectors will be considered as column vectors.

### Details

The kernel (aka null space/nullspace) of a matrix `M` is the set of all vectors `x` for which `Ax=0`. It is computed from the QR-decomposition of the matrix.

`null` is simply an alias for `nullspace` – and the Matlab name.

### Value

If `M` is an `n`-by-`m` (operating from left on `m`-dimensional column vectors), then `N=nullspace(M)` is a `m`-by-`k` matrix whose columns define a (linearly independent) basis of the `k`-dimensional kernel in `R^m`.

If the kernel is only the null vector `(0 0 ... 0)`, then NULL will be returned.

As the rank of a matrix is also the dimension of its image, the following relation is true:

`m = dim(nullspace(M)) + rank(M)`

### Note

The image of `M` can be retrieved from `orth()`.

### References

Trefethen, L. N., and D. Bau III. (1997). Numerical Linear Algebra. SIAM, Philadelphia.

### See Also

`Rank`, `orth`, `MASS::Null`

### Examples

    M <- matrix(1:12, 3, 4)
    Rank(M)                 #=> 2
    N <- nullspace(M)
    #           [,1]       [,2]      [,3]
    # [1,] 0.4082483 -0.8164966 0.4082483
    M

    M1 <- matrix(1:6, 2, 3)  # of rank 2
    M2 <- t(M1)
    nullspace(M1)            # corresponds to 1 -2  1
    nullspace(M2)            # NULL, i.e. 0 0

    M <- magic(5)
    Rank(M)                 #=> 5
    nullspace(M)             #=> NULL, i.e. 0 0 0 0 0

[Package pracma version 2.0.4 Index]