# Pathological behaviour when evaluating a sum

When I declare the function $f$ as follows:

f[n_] := Sum[x/Sum[Sqrt[y], {y, 1, x}], {x, 1, n}]/n


the input

Limit[f[n],n -> Infinity]


does not yield an answer, in fact the evaluation is terminated after a few seconds. If I now write

Limit[f[x], x -> Infinity]


I get an answer of $0$. Why is that, according to the manual entry of "Sum" we have

The iteration variable i is treated as local, effectively using Block.

If it matters, I use the version 9.0.

-

Beware of held attributes. Sum uses Block but also has HoldAll, which means that nothing is evaluated until the variable gets a value inside it - if any at all. Limit does not have held attributes.

If after defining f you evaluate f[n] (assuming n doesn't have a value in your environment) you get a

$$\frac{\sum _{x=1}^n \frac{x}{H_x^{\left(-\frac{1}{2}\right)}}}{n}$$

whereas f[x] (again, assuming x is free) gives you

$$\frac{\sum _{x=1}^x \frac{x}{H_x^{\left(-\frac{1}{2}\right)}}}{x}$$

So, note now the different summation limits and how what used to be a free variable is now colliding with the bounds. That shows what Limit actually gets and the answer, I hope.

-
I understand, it still feels weird that they implemented it that way. In my opinion taking a limit of some function should not depend on how you name the variable which is considered for the limit. – Listing Jan 6 '14 at 17:08
When it comes to manipulating expressions, one needs to be aware of whether a built-in has or not hold behaviour as that affects how it works. And some expression handling built-ins don't have that (notably Integrate and D), allowing you to generate a expression before handing that over to the built-in, but others do. That's the way it is. – carlosayam Jan 6 '14 at 17:14