rtoy / maxima

A Clone of Maxima's repo
Other
0 stars 0 forks source link

GosperSum / nusum(x^k,k,1,inf) --> unsimplified #1583

Open rtoy opened 2 days ago

rtoy commented 2 days ago

Imported from SourceForge on 2024-07-04 20:17:18 Created by willisbl on 2005-12-19 03:26:41 Original: https://sourceforge.net/p/maxima/bugs/841


(%i43) nusum(x^k,k,1,inf); (%o43) x^(inf+1)/(x-1)-x/(x-1)

A user has to clean this up with limit:

(%i44) limit(%); Is abs(x) - 1 positive, negative, or zero? neg; Is x positive, negative, or zero? pos; Is x - 1 positive or negative? neg; (%o44) -x/(x-1)

Barton

rtoy commented 2 days ago

Imported from SourceForge on 2024-07-04 20:17:19 Created by robert_dodier on 2005-12-19 15:29:24 Original: https://sourceforge.net/p/maxima/bugs/841/#fed6


rtoy commented 2 days ago

Imported from SourceForge on 2024-07-04 20:17:23 Created by macrakis on 2005-12-19 16:30:51 Original: https://sourceforge.net/p/maxima/bugs/841/#626e


Logged In: YES user_id=588346

It is easy enough for the top level of GosperSum to convert

GS(...,v,a,inf)

to

limit(GS(...,v,a,GENSYM),GENSYM,inf)

In some cases (probably not for the output of GS), this will return a noun form, but there's nothing wrong with that.

rtoy commented 2 days ago

Imported from SourceForge on 2024-07-04 20:17:26 Created by macrakis on 2005-12-19 16:37:41 Original: https://sourceforge.net/p/maxima/bugs/841/#b48c


Logged In: YES user_id=588346

PS I do NOT recommend leaving in the INF and using the 1-argument form of Limit for cleaning up, partly because expressions involving multiple INFs are problematic (though Limit supposedly treats them as though they're all the same variable) and partly because Limit is buggy:

assume(a>1)$ limit(a*inf-inf) => minf

rtoy commented 2 days ago

Imported from SourceForge on 2024-07-04 20:17:30 Created by andrejv on 2007-01-09 10:51:25 Original: https://sourceforge.net/p/maxima/bugs/841/#6980


Logged In: YES user_id=1179910 Originator: NO

sum(x^k, k, 0, inf) can be done by

(%i1) sum(x^k, k, 0, inf), simpsum; Is abs(x) - 1 positive, negative, or zero? neg; (%o1) 1/(1-x)

A more interesting example is

(%i2) sum(k*x^k, k, 1, inf), simpsum; (%o2) sum(k*x^k,k,1,inf) (%i3) nusum(k*x^k, k, 1, inf); (%o3) (x^(inf+1)*(inf*x-inf-1))/(x-1)^2+x/(x-1)^2 <-- applying limit would not help! (%i4) load(closed_form)$ (%i5) closed_form(%o2); Is abs(x) - 1 positive, negative, or zero? neg; Is x positive, negative, or zero? pos; Is x - 1 positive or negative? neg; (%o5) x/(x^2-2*x+1)

closed_form uses nusum with substituted bounds and then computes the limit (as was suggested by Stavros). I propose we do not change nusum or GosperSum and advise users to always use closed_form for simplifying sums. In this case we can close this bug as 'wont fix'.

Andrej