# Finding integer solutions to systems of polynomial equations

Hi,

I am trying to do something very simple but have been struggling.

Here is a simplified example that I can't get to work. I want to define polynomials with integer coefficients, say f(A,B) = A+B, g(A,B) = aA+bB, where I want to assume that a and b are intgers. I want the solver to give me the values of a and b so that f-g is equal to zero as a polynomial in A and B. So, I want it to give me a== 1, b== 1.

I have tried something like this-

R.< A,B > = ZZ[]

f = A+B

var('a', domain = ZZ)

var('b', domain = ZZ)

g = aA+bB

solve(f-g==0,a,b),

but what it gives me is [a == -((b-1)*B-A)/A, [1]].

How do I define variables a and b which are integers, but unknown integers? No matter what I seem to do, they are put in Symbolic Ring. How do I get the solve command to give me integer solutions to a set of linear equations?

edit retag close merge delete

Sort by » oldest newest most voted

This isn't an answer, but one thing that could be useful in general with integers is to do

assume(A,'integer')


But solve in general is via Maxima, which will assume you are using "normal" real or complex variables, and this doesn't help (because Maxima explicitly avoids your assumptions in solving, because it is assumed you are using dummy variables in solve commands).

I am not really sure how the domain parameter influences things.

more

I have tried using assume(a,'integer) but a still seems to be in the Symbolic Ring. It still gives me an answer for a which is often not an integer for different values of A and B.

( 2011-10-07 15:51:56 +0100 )edit

Right, which is why this wasn't an answer, but just some related information you might find useful. 'a' will always be in the symbolic ring unless you change it to a polynomial ring. You would probably have to use integer programming techniques of some kind...

( 2011-10-08 22:12:20 +0100 )edit