# 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?

( 2013-12-22 02:17:33 -0600 )edit

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

( 2013-12-22 03:15:21 -0600 )edit

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

( 2013-12-22 04:48:04 -0600 )edit

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

( 2013-12-22 04:52:38 -0600 )edit

Ok thank you, with 6.0 everything works fine now!

( 2013-12-22 08:41:45 -0600 )edit