MatBasis - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


LinearAlgebra[Modular]

  

MatBasis

  

compute Basis and Nullspace of vectors stored in the rows of a mod m Matrix

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

MatBasis(m, A, nrow, nullflag)

Parameters

m

-

modulus

A

-

mod m Matrix

nrow

-

number of rows containing Vectors on input

nullflag

-

boolean; indicates whether nullspace

Description

• 

The MatBasis function computes a basis of the set of vectors in the first nrow rows of A. Optionally, a basis for the nullspace can also be computed. On successful completion, the number of rows in A containing vectors (labeled r) is returned (the dimension of the basis).

• 

Computation of the basis does not require that m be a prime, but computation of the nullspace does. In some cases, it is possible to compute the nullspace with m composite. If this is not possible, the function returns an error indicating that the algorithm failed because m is composite.

• 

To request a nullspace, set nullflag=true. If the nullspace is requested, the input Matrix must have at least as many rows as columns, and the basis of the nullspace is specified in the trailing nr+1..n rows of the Matrix, where n is the number of columns, and r is the return value (the dimension of the basis for the input vectors).

• 

This command is part of the LinearAlgebra[Modular] package, so it can be used in the form MatBasis(..) only after executing the command with(LinearAlgebra[Modular]).  However, it can always be used in the form LinearAlgebra[Modular][MatBasis](..).

Examples

An example of a three dimensional basis and a two dimensional nullspace.

withLinearAlgebraModular:

p2741

p2741

(1)

AModp,Matrix5,5,i,jrand,integer:

Fillp,A,4..5:

A

25431568127356581430154923761511183916419462114924180000000000

(2)

rMatBasisp,A,3,true:

A,r

1001972187801015781735001172421667691163101710863100657501,3

(3)

In the previous example, the first r rows are the basis of the input vectors, and the remaining rows are the basis of the nullspace. Check that these are orthogonal.

Multiplyp,A,1..r,A,r+1..5,transpose

000000

(4)

Construct an example with a known 2-D nullspace.

AModp,Matrix5,5,i,jrand,float8:

forito5doAi,4modptruncpAi,1,p;Ai,5modp2truncpAi,3,penddo:A

2635.353.2657.106.168.2587.1857.827.154.1087.1720.1181.493.1021.1755.2209.884.1207.532.327.26.2325.518.2715.1705.

(5)

Obtain the basis and nullspace.

rMatBasisp,A,5,true:

A,r

1.0.0.2740.0.0.1.0.0.0.0.0.1.0.2739.1.0.0.1.0.0.0.2.0.1.,3

(6)

Check orthogonality.

Multiplyp,A,1..r,A,r+1..5,transpose

0.0.0.0.0.0.

(7)

See Also

LinearAlgebra/Details

LinearAlgebra[Modular]

LinearAlgebra[Modular][Fill]

LinearAlgebra[Modular][Mod]

LinearAlgebra[Modular][Multiply]