LinearAlgebra[Modular]
Rank
compute the rank of a mod m Matrix
RankProfile
compute the rank profile of a square mod m Matrix
Calling Sequence
Parameters
Description
Examples
Rank(m, A, meth)
RankProfile(m, A, meth)
m
-
modulus
A
mod m Matrix
meth
(optional) keyword for choice of method
The Rank function returns the rank of the input mod m Matrix, while the RankProfile function returns a list of 'rank' elements describing the rank profile of the input mod m Matrix.
The rank profile list is simply a list of the location of the first non-zero entry in each nontrivial row in the row reduced form of the Matrix.
The following methods are available:
REF
(default) Compute using standard row-reduction (Row Echelon Form)
inplaceREF
Compute using standard row-reduction in-place in the input Matrix
RET
Compute using a Row Echelon Transformation approach
inplaceRET
Compute using a Row Echelon Transformation in-place in the input Matrix
Note that the two inplace methods available will destroy the data in the input Matrix, while the other two methods will generate a copy of the Matrix in which to perform the computation.
The RET methods are likely to be faster for large matrices, but may fail if the modulus is composite.
These commands are part of the LinearAlgebra[Modular] package, so they can be used in the form Rank(..) and RankProfile(..) only after executing the command with(LinearAlgebra[Modular]). However, they can always be used in the form LinearAlgebra[Modular][Rank](..) and LinearAlgebra[Modular][RankProfile](..).
with⁡LinearAlgebraModular:
p≔97
M≔Mod⁡p,2,11,1,80,31,16,27,36,8,32,32,31,25,4,90,63,integer
M≔2111803116273683232312549063
Rank⁡p,M,RankProfile⁡p,M
4,1,2,3,4
With an inplace method the input Matrix is altered
Rank⁡p,M,inplaceREF,M
4,1544940015826001350001
And a case that is not full rank
M≔Mod⁡p,2,2,1,80,31,31,27,36,8,8,32,31,25,25,90,63,integer
M≔221803131273688323125259063
RankProfile⁡p,M
1,3,4
Rank⁡p,M
3
A composite example where the RET method is unsuccessful
M≔Matrix⁡3,2,2,3,datatype=integer
M≔3223
Rank⁡6,M,REF
2
Rank⁡6,M,RET
Error, (in LinearAlgebra:-Modular:-RowEchelonTransform) modulus is composite
Note that this is only because this is a case where the row echelon form exists, but the row echelon transform cannot be written in the required form.
See Also
LinearAlgebra/Details
LinearAlgebra[Modular][Create]
LinearAlgebra[Modular][RowEchelonTransform]
LinearAlgebra[Modular][RowReduce]
Download Help Document