# solving a matrix equation modulo m

Hello,

I am quite new to sage an have troubles with the following problem:

I'm given a matrix 'A' and a vector 'b' and a positiv interger 'm' (m does not have to be prime). 'A' is a matrix with more rows than collums, so it is not quadratic. I would like to find the solution 'x' of the equation: A*x = b (mod m).

I have tried to manage it with e.g.:

A.solve_right(Integers(m),p),

but this works only if m is prime. I also was able to solve my problem if I explicitly insert the equations like this:

gp('matsolvemod([1,2;1,3],6,[1,0]~,1)')

But I need something, where I just have to specify 'A' and 'b' (and of course m). Can somebody help me?

best regards

edit retag close merge delete

Sort by » oldest newest most voted

You should directly work on the $\mathbb{Z}/m\mathbb{Z}$ module as follows:

sage: R = IntegerModRing(15)
sage: M = Matrix(R, [[1,2],[1,4],[2,4]])
sage: b = vector(R, [3,5,6])
sage: M.solve_right(b)
(1, 1)

more

Hello and thanks for the answer. If I try your example above I get the following error: TypeError: base ring must be an integral domain I get this error if and only if m is not prime (in this case m=15 is not prime). I tried your example with the free sage provided online at [sagemath](http://www.sagemath.org/) and there it works fine. So could it be, that my version is not up to date, although I downloaded it last week?

I was using Sage 5.12, what is the result of the version() function ?

This is my version: 'Sage Version 5.8, Release Date: 2013-03-15'

It also works on the latest 6.0, so perhaps should you upgrade.