On 26 Jan 2005, at 18:14, Richard Fateman wrote:
> As for Andrzej's comment, that this does the job...
>
>
> Block[{Power,Infinity},
> 0^(i_) := KroneckerDelta[i, 0]; Sum[a[i]*x^i, {i, 0, Infinity}]/. x
> -> 0]
>
> Here are some comments:
>
>
> 1. There is no need for Infinity to be bound inside the Block.
Indeed, I did not check that. I had reasons to think it was needed.
> 4. Your solution gives the wrong answer for
> Sum[a[i]*x^i, {i, -1, Infinity}]
Since any sum can be split into a finite sum over the negative indices
and an infinite sum over indices >=0 and since finite sums are handled
correctly this is essentially a cosmetic issue. In fact it is easy to
modify Sum to automatically split all sums in this way, and to use the
Block trick for the infinite part. But I don't think this is important
enough to bother.
>
> It also doesn't work for
> Sum[a[i]*x^(i^2), {i, -1, Infinity}]
>
> This latter problem suggests an inadequacy in the treatment of the
> simplification of Sum[KroneckerDelta[...]....]
Well, yes. One can always find ways to trip up Mathematica (and all
other CAS) in this sort of thing. It's a bit like playing chess with a
computer program; however strong it is if you get to know it well
enough you will find ways to beat it (assuming of course you are a good
chess player and understand computers). But the difference is that CAS
is not meant to be your opponent and trying to trip it up (which is
also what most of Maxim's examples involve) is a pointless exercise,
which may amuse people who like such things but has nothing to do with
any serious work.
Andrzej Kozlowski