Re: Can it be done - easily?

*To*: mathgroup at smc.vnet.net*Subject*: [mg13236] Re: Can it be done - easily?*From*: Daniel Lichtblau <danl>*Date*: Fri, 17 Jul 1998 03:17:35 -0400*Organization*: Wolfram Research, Inc.*References*: <6od25q$hn9@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Barry Culhane wrote: > > Myself and two workmates are software developers. One guy wanted a > formula to calculate a result for the following equation... > Z = sum of X/Y where X is a fixed number, and Y ranges from A-B in > fixed steps... > i.e... X=10000 ; Y=100,200,300...1000 > i.e... Z= 10000/100 + 10000/200 + ... 10000/1000 = 292.896 > > He and I tried to figure out a simple formula to calculate it, but > couldn't. The third guy said it was *not* *possible* to derive a > formula - we think he's wrong, but can't prove it. MathCad can solve > it in the blink of an eye, even if the value of Y ranges from 1 to 1e6 > in steps of 1 !!! > > Can anyone come up with a simple formula to give a reasonably accurate > result? It is too slow to actually divide X by Y for each value of Y > as there may be 1000 or even 100,000 values of Y. > > Thanks in advance... > > Barry Culhane > > Schaffner Ltd, Limerick, IRELAND One method: In[20]:= Timing[InputForm[ee = Sum[1/y, {y,a,b,c}]]] Out[20]= {0.32 Second, -(PolyGamma[0, a/c]/c) + > PolyGamma[0, 1 + a/c + Floor[(-a + b)/c]]/c} In[21]:= InputForm[ff = x*ee /. {x->10000, a->100, b->1000, c->100}] Out[21]//InputForm= 10000*((7381/2520 - EulerGamma)/100 + EulerGamma/100) In[22]:= N[ff] Out[22]= 292.897 You may need to use high precision rather than machine arithmetic in the last step. Depends on the magnitudes of the numbers in the exact result. Daniel Lichtblau Wolfram Research