MathGroup Archive 2010

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

Search the Archive

Re: What inspite FindInstance ?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg108000] Re: [mg107955] What inspite FindInstance ?
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Fri, 5 Mar 2010 04:30:39 -0500 (EST)
  • References: <201003041025.FAA26461@smc.vnet.net>

Artur wrote:
> Dear Mathematica Gurus,
> 
> Mathematical problem is following:
> Find rational numbers a,b,c such that
> (Pi^2)*a+b+c*Catalan==Zeta[2,5/k] for some k
> e.g.
> FindInstance[
>  Zeta[2, 5/4] -a Pi^2 - b - c Catalan == 0, {a, b, c}, Rationals]
> give answer
> FindInstance::nsmet: The methods available to FindInstance are 
> insufficient to find the requested instances or prove they do not exist. >>
> 
> 
> What inspite FindInstance? (I know that we can do 6 loops (3 
> Denominators and 3 Numerators) but we have to have luck to give good 
> range of loops..
> 
> Good answer for my example is {a,b,c}={1,-16,8}but in general case these 
> a,b,c will be rationals (not integers)
> e.g. (Pi^2)*a+b+c*Catalan==Zeta[2,5/2]  we have {a,b,c}={1/2,-40/9,0} 
> but this last case Mathematica deduced autmathically if we execute :
> Zeta[2,5/2]
> first one none.
> 
> Best wishes
> Artur

Can be done using numerical approximation. One might then need to 
provide proof that the given rationals are in fact correct (or not; I 
make no attempt to check results).

There might be something already built in to Mathematica for this, but I 
did not find anything in a brief search. So here is some code. It is 
based on lattice reduction. One first finds an integer relation between 
target and a given set of values. One then simply divides through by the 
multiplier used for the target, in order to get rational multipliers for 
the values.

findRelation[target_, vals_, prec_] := Module[
   {nvals, lat, redlat, relation},
   nvals = Round[10^prec*N[Append[vals, -target], prec]];
   lat = Transpose[Join[IdentityMatrix[Length[nvals]], {nvals}]];
   redlat = LatticeReduce[lat];
   relation = Most[First[redlat]];
   Most[relation]/Last[relation]
   ]

Here are your examples:

In[93]:= vals = {Pi^2, 1, Catalan};
findRelation[Zeta[2, 5/4], vals, 50]
findRelation[Zeta[2, 5/2], vals, 50]

Out[94]= {1, -16, 8}

Out[95]= {1/2, -(40/9), 0}


Daniel Lichtblau
Wolfram Research


  • Prev by Date: Re: Re: learning calculus through mathematica
  • Next by Date: Re: Write an expression in a specific form
  • Previous by thread: Re: What inspite FindInstance ?
  • Next by thread: Re: What inspite FindInstance ?