Re: solve - integer solution
- To: mathgroup at smc.vnet.net
- Subject: [mg34160] Re: [mg34145] solve - integer solution
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Tue, 7 May 2002 03:53:56 -0400 (EDT)
- References: <200205060920.FAA20031@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Chris Krook wrote:
>
> Hello,
> I need to find an instance from the integers that satisfies the following
> equation:
>
> {12 c[1, 0] + 12 c[2, 0] + 25 c[3, 0] - 50 c[3, 1] + 25 c[4, 0] - 50 c[4,
> 1],
> 12 c[1, 1] + 12 c[2, 1] + 10 c[3, 0] + 15 c[3, 1] + 10 c[4, 0] + 15 c[4,
> 1],
> c[1, 0] + 2 c[2, 0], c[1, 1] + 2 c[2, 1], c[3, 0] - 5 c[4, 1],
> c[3, 1] + c[4, 0] - c[4, 1]}=={0,0,0,0,0,0}
>
> Using Solve doesn't give (explicit) integer solutions; Furthermore, since I
> only need an arbitrary integer-instance is there an easier way to obtain
> one? (if not, how can I adjust solve?)
> (this is small example; my actual problem involves much larger lists)
>
> Thanks in advance,
> Chris
Since you are solving a homogeneous linear system, one method is to use
NullSpace to get rational solutions and then clear denominators if any
are present.
polys = {
12*c[1,0] + 12*c[2,0] + 25*c[3,0] - 50*c[3,1] + 25*c[4,0] - 50*c[4,1],
12*c[1,1] + 12*c[2,1] + 10*c[3,0] + 15*c[3,1] + 10*c[4,0] + 15*c[4,1],
c[1,0] + 2*c[2,0],
c[1,1] + 2*c[2,1],
c[3,0] - 5*c[4,1],
c[3,1] + c[4,0] - c[4,1]};
vars = Variables[polys];
<<LinearAlgebra`MatrixManipulation`
Out[36]//InputForm=
{{{12, 0, 12, 0, 25, -50, 25, -50}, {0, 12, 0, 12, 10, 15, 10, 15},
{1, 0, 2, 0, 0, 0, 0, 0}, {0, 1, 0, 2, 0, 0, 0, 0},
{0, 0, 0, 0, 1, 0, 0, -5}, {0, 0, 0, 0, 0, 1, 1, -1}}, {0, 0, 0, 0, 0,
0}}
In[37]:= InputForm[sol = NullSpace[mat]]
Out[37]//InputForm=
{{-50, -160, 25, 80, 60, 12, 0, 12}, {-150, 10, 75, -5, 0, -12, 12, 0}}
No denominators to clear. We check the solutions.
In[38]:= mat . sol[[1]]
Out[38]= {0, 0, 0, 0, 0, 0}
In[39]:= mat . sol[[2]]
Out[39]= {0, 0, 0, 0, 0, 0}
Daniel Lichtblau
Wolfram Research
- References:
- solve - integer solution
- From: "Chris Krook" <c.krook@student.tue.nl>
- solve - integer solution