Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Simplifying with assumptions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg49057] Re: Simplifying with assumptions
  • From: Paul Abbott <paul at physics.uwa.edu.au>
  • Date: Tue, 29 Jun 2004 04:50:49 -0400 (EDT)
  • Organization: The University of Western Australia
  • References: <200406250658.CAA12398@smc.vnet.net> <cbi7jv$lep$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

In article <cbi7jv$lep$1 at smc.vnet.net>,
 Daniel Lichtblau <danl at wolfram.com> wrote:

> Mietek Bak wrote:
> > Hello,
> > 
> > I'm a complete newcomer to Mathematica, so please excuse this possibly
> > silly question.
> > 
> > I'm trying to determine if a formula will ever give an integer result,
> > assuming that all variables used in it are integer.  I've been searching
> > through the built-in documentation, but my best guess didn't really do
> > anything:
> > 
> > Simplify[Element[Sqrt[48 - n^2 + 8*x],Integers],Element[{n, x},Integers]]
> > 
> > It would be best if I could somehow determine the set of combinations of
> > variables that would give an integer result -- if there are any.  Is
> > there a way to do that in Mathematica?
> > 
> > Thanks in advance,
> > Mietek Bak.
> 
> 
> I'm not sure what would be a good way to do this sort of thing in 
> general. For relatively simple examples you can make progress if you 
> assign integer values to one parameter, as below.
> 
> In[7]:= InputForm[Table[
>    Reduce[{48-n^2+8*x==k^2, Element[{x,k},Integers]}, {x,k}], {n,10}]]
> 
> Out[7]//InputForm=
> {False, (C[1] \[Element] Integers && x == -5 + 4*C[1] + 8*C[1]^2 &&
>     k == 2 + 8*C[1]) || (C[1] \[Element] Integers &&
>     x == -1 + 12*C[1] + 8*C[1]^2 && k == 6 + 8*C[1]), False,
>   (C[1] \[Element] Integers && x == -4 + 8*C[1]^2 && k == 8*C[1]) ||
>    (C[1] \[Element] Integers && x == -2 + 8*C[1] + 8*C[1]^2 &&
>     k == 4 + 8*C[1]), False, (C[1] \[Element] Integers &&
>     x == -1 + 4*C[1] + 8*C[1]^2 && k == 2 + 8*C[1]) ||
>    (C[1] \[Element] Integers && x == 3 + 12*C[1] + 8*C[1]^2 &&
>     k == 6 + 8*C[1]), False, (C[1] \[Element] Integers && x == 2 + 
> 8*C[1]^2 &&
>     k == 8*C[1]) || (C[1] \[Element] Integers && x == 4 + 8*C[1] + 
> 8*C[1]^2 &&
>     k == 4 + 8*C[1]), False, (C[1] \[Element] Integers &&
>     x == 7 + 4*C[1] + 8*C[1]^2 && k == 2 + 8*C[1]) ||
>    (C[1] \[Element] Integers && x == 11 + 12*C[1] + 8*C[1]^2 &&
>     k == 6 + 8*C[1])}

There is a pattern in the coefficients, easily determined using 
InterpolatingPolynomial. After some manipulation I get that the general 
solution can be expressed in the following form:

  sol[m_,p_] = {{m,p} \[Element] Integers && 

    n == 4p   &&   x == 8m^2 +       2p^2 - 6 && 
                   x == 8m^2 +  8m + 2p^2 - 4 
   ||  

    n == 4p + 2 && x == 8m^2 +  4m + 2p^2 + 2p - 5 && 
                   x == 8m^2 + 12m + 2p^2 + 2p - 1}

Tabulating values for various m and p,

  vals = Table[ToRules /@ sol[m, p], {m, -5, 5}, {p, -7, 7}]

we check that Sqrt[48 - n^2 + 8 x] is an integer:

  Sqrt[48 - n^2 + 8 x] /. vals

Cheers,
Paul

-- 
Paul Abbott                                   Phone: +61 8 9380 2734
School of Physics, M013                         Fax: +61 8 9380 1014
The University of Western Australia      (CRICOS Provider No 00126G)         
35 Stirling Highway
Crawley WA 6009                      mailto:paul at physics.uwa.edu.au 
AUSTRALIA                            http://physics.uwa.edu.au/~paul


  • Prev by Date: RE: one question about draw graph in frame
  • Next by Date: Re: Re: Re: Net/Link: Problem with DLL (2)
  • Previous by thread: Re: Simplifying with assumptions
  • Next by thread: RE: Simplifying with assumptions