Re: Solving equations and inequalities with Reduce - how?
- To: mathgroup at smc.vnet.net
- Subject: [mg87715] Re: Solving equations and inequalities with Reduce - how?
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 16 Apr 2008 05:01:30 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <fu1tuf$ogc$1@smc.vnet.net>
Marc Heusser wrote: > I tried to solve equations with Reduce and somehow did not quite > formulate it right, so Reduce complains with > "Reduce::ivar: 1 is not a valid variable". > > This is what I tried: > > Wanted: A six digit number satisfying the following conditions: > The first digit is not zero. > If you take the first two digits and move them to the end of the number, > the resulting number must be twice the original number. > > In[23]:=Reduce[200000a +20000 b +2000 c+200 d+20 e + 2 f > \[Equal]100000c +10000 d +1000 e+100 f+10 a + b , {a,b,c,d,e,f}, > Modulus\[Rule]9] > > I did solve the problem through exhaustive search: > > In[14]:=Timing[Select[Range[10^6], FractionalPart[#/10000] 1000000 + > IntegerPart[#/10000]\[Equal] 2 #&]] > Out[14]={34.2848 Second,{142857,285714,428571}} > > but would like to understand how to use Reduce (or another function) to > solve such a set of equations. Marc, First, one of your variables had been set to the value one before you tried Reduce[]. Second, the option Modulus->9 is not doing what you may have in mind (the solution yield by Reduce[] does not fulfill your original criteria ). Third, using FindInstance[] may help to formulate and check your problem in an algebraic way. For instance, starting with a fresh kernel, In[1]:= eqn = 200000 a + 20000 b + 2000 c + 200 d + 20 e + 2 f == 100000 c + 10000 d + 1000 e + 100 f + 10 a + b; In[2]:= Reduce[eqn && a != 0, {a, b, c, d, e, f}, Modulus -> 9] Out[2]= a != 0 && a == C[1] && b == C[2] && c == C[3] && d == C[4] && e == C[5] && f == 8 C[1] + 8 C[2] + 8 C[3] + 8 C[4] + 8 C[5] In[3]:= FindInstance[eqn && a != 0, {a, b, c, d, e, f}, Modulus -> 10] eqn /. %[[1]] Out[3]= {{a -> 1, b -> 0, c -> 0, d -> 0, e -> 0, f -> 0}} Out[4]= False In[5]:= FindInstance[eqn && a != 0, {a, b, c, d, e, f}, Integers] eqn /. %[[1]] Out[5]= {{a -> 1, b -> 4, c -> 0, d -> 0, e -> 0, f -> 2857}} Out[6]= True Regards, -- Jean-Marc