LinearAlgebra[Modular] - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : Linear Algebra : LinearAlgebra Package : Modular Subpackage : LinearAlgebra/Modular/Inverse

LinearAlgebra[Modular]

  

Inverse

  

compute the Inverse of a square mod m Matrix

  

Adjoint

  

compute the Adjoint of a square mod m Matrix

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

Inverse(m, A, det, B, meth)

Adjoint(m, A, det, B, meth)

Parameters

m

-

modulus

A

-

mod m Matrix

det

-

(optional) name to use for output determinant

B

-

(optional) Matrix to use for output Inverse or Adjoint

meth

-

(optional) method to use for computing Inverse or Adjoint

Description

• 

The Inverse and Adjoint functions compute the inverse and adjoint, respectively, of a square mod m Matrix.

• 

If det is specified, it is assigned the value of the determinant on successful completion.

• 

If B is specified, it must have dimensions and datatype identical to A, and will contain the inverse or adjoint on successful completion. In this case the command will return NULL.

• 

The default method for the inverse is LU, while the default method for the adjoint is RET, and these can be changed by specification of meth.

  

Allowable options are:

 

 

LU

Obtain inverse or adjoint via LU decomposition.

inplaceLU

Obtain inverse or adjoint via LU decomposition destroying the

 

data in A in the process.

RREF

Obtain inverse or adjoint through application of row reduction

 

to an identity augmented mod m Matrix.

RET

Obtain inverse or adjoint through application of a row echelon

 

transform to A.

inplaceRET

Obtain inverse or adjoint through application of a row echelon

 

transform to A, replacing A with the inverse or adjoint.

  

The LU and inplaceLU methods are the most efficient for small to moderate sized problems. The RET and inplaceRET methods are the most efficient for very large problems. The RREF method is the most flexible for nonsingular matrices.

• 

For the inplaceRET method, B should never be specified, as the output replaces A. For this method, the commands always return NULL.

• 

With the LU-based and RET-based methods, it is generally required that m be a prime, as mod m inverses are needed, but in some cases it is possible to obtain an LU decomposition or a Row-Echelon Transform for m composite.

  

For the cases where LU Decomposition or Row-Echelon Transform cannot be obtained for m composite, the function returns an error indicating that the algorithm failed because m is composite.

  

Note: There are cases with composite m for which the inverse and adjoint exist, but no LU decomposition or Row-Echelon Transform is possible.

• 

If it exists, the RREF method always finds the mod m inverse.  The RREF method also finds the adjoint if the Matrix is nonsingular.

• 

The RET method is the only method capable of computing the adjoint if the matrix is singular. The inplaceRET method cannot be used to compute the adjoint of a singular matrix, as this operation cannot be performed in-place.

• 

These commands are part of the LinearAlgebra[Modular] package, so they can be used in the form Inverse(..) and Adjoint(..) only after executing the command with(LinearAlgebra[Modular]).  However, they can always be used in the form LinearAlgebra[Modular][Inverse](..) and LinearAlgebra[Modular][Adjoint](..).

Examples

Basic 3x3 Matrix.

withLinearAlgebra[Modular]:

p97

p:=97

(1)

MModp,Matrix3,3,i,j→rand,integer[]

M:=779610865836802244

(2)

MiInversep,M

Mi:=16807220203256589

(3)

Multiplyp,M,Mi,Multiplyp,Mi,M

100010001,100010001

(4)

An example that fails with the LU and RET methods, but succeeds with RREF.

m6

m:=6

(5)

MModm,3,2,2,1,float[8]

M:=3.2.2.1.

(6)

MiInversem,M

Error, (in LinearAlgebra:-Modular:-LUDecomposition) no LU decomposition exists: modulus is composite

MiInversem,M,'RET'

Error, (in LinearAlgebra:-Modular:-Inverse) modulus is composite

MiInversem,M,'RREF'

Mi:=5.2.2.3.

(7)

Multiplym,M,Mi,Multiplym,Mi,M

1.0.0.1.,1.0.0.1.

(8)

An example where no inverse exists, but the adjoint does exist.

m6

m:=6

(9)

MModm,2,4,4,4,float[8]

M:=2.4.4.4.

(10)

MiInversem,M,'RREF'

Error, (in LinearAlgebra:-Modular:-RowReduce) no inverse exists: modulus is composite

MaAdjointm,M,'det','RREF'

Ma:=4.2.2.2.

(11)

det,Multiplym,M,Ma,Multiplym,Ma,M

4,4.0.0.4.,4.0.0.4.

(12)

An example where only the RET method succeeds at computing the adjoint.

m7

m:=7

(13)

MModm,1,1,1,1,integer

M:=1111

(14)

MaAdjointm,M,'RREF'

Error, (in LinearAlgebra:-Modular:-RowReduce) matrix is singular

MaAdjointm,M,'LU'

Error, (in LinearAlgebra:-Modular:-LUDecomposition) matrix is singular

MaAdjointm,M,'det','RET'

Ma:=1661

(15)

det,Multiplym,M,Ma,Multiplym,Ma,M

0,0000,0000

(16)

See Also

LinearAlgebra/Details

LinearAlgebra[Modular]

LinearAlgebra[Modular][LUDecomposition]

LinearAlgebra[Modular][Mod]

LinearAlgebra[Modular][Multiply]

LinearAlgebra[Modular][RowEchelonTransform]

LinearAlgebra[Modular][RowReduce]

 


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam