On 9/25/07, Robert Dodier <robert.dodier at gmail.com> wrote:
> On 9/24/07, Stavros Macrakis <macrakis at alum.mit.edu> wrote:
>
> > The default simplifier does only trivial cases e.g. 'sum(0,...) => 0;
> > sum(freeof_i,i,a,b) (b>=a) => (b-a+1)*freeof_i; etc.
> >
> > The verb/procedure "sum" mostly expands, e.g. sum(f(i),i,2,3)=>f(2)+f(3)
> > The flag simpsum=true tells the simplifier to handle some more cases e.g.
> > sum(a^i,...), sum(i^N,...).
> > The procedure nusum uses Gosper's algorithm, but doesn't handle inf.
> > Some newer code to simplify sums, such as Andrej's simplify_sum.
>
> To this list I'll add the Zeilberger package which implements Gosper's
> and Zeilberger's algorithms.
>
> It seems appropriate to me to apply only some basic simplifications
> by default, and to have another way to tell Maxima to try harder.
> This is similar to the scheme for trigonometric expressions --
> many simplifications are applied by separate functions.
>
> I guess it seems less confusing in general to require an explicit
> call to a simplification function, instead of assigning to a global flag.
> So maybe maybe we should do away with the simpsum flag, and
> have a collection of summation simplification functions, which try
> different methods or apply to different kinds of summation expressions.
> Maybe we could try to regularize the function names, if only to give
> nusum a more descriptive name.
simplify_sum uses (almost) all algorithms implemented in maxima to
compute the closed form of a sum (simpsum=true, nusum, Zeilberger and
also does sums of rational functions using the psi functions). If
simplify_sum fails then maxima probably can't compute the closed form,
so if the user knows about simplify_sum then he does not need to know
other functions.
--
Andrej