sage: M = MatrixSpace(IntegerRing(),4,2)(range(8)) sage: M.kernel() Free module of degree 4 and rank 2 over Integer Ring Echelon basis matrix: [ 1 0 -3 2] [ 0 1 -2 1]
A kernel of dimension one over
:
sage: A = MatrixSpace(RationalField(),3)(range(9)) sage: A.kernel() Vector space of degree 3 and dimension 1 over Rational Field Basis matrix: [ 1 -2 1]
A trivial kernel:
sage: A = MatrixSpace(RationalField(),2)([1,2,3,4]) sage: A.kernel() Vector space of degree 2 and dimension 0 over Rational Field Basis matrix: [] sage: M = MatrixSpace(RationalField(),0,2)(0) sage: M [] sage: M.kernel() Vector space of degree 0 and dimension 0 over Rational Field Basis matrix: [] sage: M = MatrixSpace(RationalField(),2,0)(0) sage: M.kernel() Vector space of dimension 2 over Rational Field
Kernel of a zero matrix:
sage: A = MatrixSpace(RationalField(),2)(0) sage: A.kernel() Vector space of degree 2 and dimension 2 over Rational Field Basis matrix: [1 0] [0 1]
Kernel of a non-square matrix:
sage: A = MatrixSpace(RationalField(),3,2)(range(6)) sage: A.kernel() Vector space of degree 3 and dimension 1 over Rational Field Basis matrix: [ 1 -2 1]
The 2-dimensional kernel of a matrix over a cyclotomic field:
sage: K = CyclotomicField(12); a = K.gen() sage: M = MatrixSpace(K,4,2)([1,-1, 0,-2, 0,-a^2-1, 0,a^2-1]) sage: M [ 1 -1] [ 0 -2] [ 0 -zeta12^2 - 1] [ 0 zeta12^2 - 1] sage: M.kernel() Vector space of degree 4 and dimension 2 over Cyclotomic Field of order 12 and degree 4 Basis matrix: [ 0 1 0 -2*zeta12^2] [ 0 0 1 -2*zeta12^2 + 1]
A nontrivial kernel over a complicated base field.
sage: K = FractionField(PolynomialRing(RationalField(),2,'x')) sage: M = MatrixSpace(K, 2)([[K.gen(1),K.gen(0)], [K.gen(1), K.gen(0)]]) sage: M [x1 x0] [x1 x0] sage: M.kernel() Vector space of degree 2 and dimension 1 over Fraction Field of Multivariate Polynomial Ring in x0, x1 over Rational Field Basis matrix: [ 1 -1]
Other methods for integer matrices are
elementary_divisors
, smith_form
(for the Smith normal form),
echelon
(a method for integer matrices) for the Hermite normal form,
frobenius
for the Frobenius normal form (rational canonical form).
There are many methods for matrices over a field such as
or a finite field:
row_span
, nullity
, transpose
, swap_rows
,
matrix_from_columns
, matrix_from_rows
, among many others.
See the file matrix.py
for further details.
See About this document... for information on suggesting changes.