介绍
例如
-
[[1,2],[3,4]] mod 7 = [[5,1],[5,3]] (mod 7)
-
Sage (www.sagemath.org) as
Matrix(IntegerModRing(7), [[1, 2], [3,4]]).inverse()
-
python代码
import numpy
from sympy import Matrix
def matInvMod (vmnp, mod):
nr = vmnp.shape[0]
nc = vmnp.shape[1]
if (nr!= nc):
print ("Error: Non square matrix! exiting")
exit()
vmsym = Matrix(vmnp)
vmsymInv = vmsym.inv_mod(mod)
vmnpInv = numpy.array(vmsymInv)
print("vmnpInv: ", vmnpInv, "\n")
k = nr
vmtest = [[1 for i in range(k)] for j in range(k)] # just a 2-d list
vmtestInv = vmsym*vmsymInv
for i in range(k):
for j in range(k):
#print i, j, vmtrx2[i,j] % mod
vmtest[i][j] = vmtestInv[i,j] % mod
print ("test vmk*vkinv % mod \n:", vmtest)
return vmnpInv
if __name__ == '__main__':
#p = 271
mat = numpy.matrix([[1,2],[3,4]])
p = 7
print(matInvMod(mat,p))