XCas sum limit confusion
08-26-2020, 07:48 PM
Post: #1
 Albert Chan Senior Member Posts: 2,066 Joined: Jul 2018
XCas sum limit confusion
Quote:Discrete sum (with 2 or 4 arguments return then sum from a to b if a<=b
or of the opposite of the sum from b+1 to a-1 if a>b+1 or 0 if a=b+1)
or the discrete primitive or sum of the elements of a list or a sequence.

sum(Expr,Var,VarMin(a),VarMax(b),[VarStep(p)])
Above quote is from XCas help screen for sum()

Why the convoluted swapping of limit with aboved logic ?
And, why swapped limit changed to b+1 to a-1, and not b to a ?

Some confusing examples:

XCas> sum(k, k, 1, 5) ﻿ ﻿ ﻿ ﻿ ﻿ ﻿ ﻿// = 1+2+3+4+5 = 15
XCas> sum(k, k, 5, 1) ﻿ ﻿ ﻿ ﻿ ﻿ ﻿ // = -sum(k, k, 2, 4) = -(2+3+4) = -9. OK, but don't know why

XCas> sum(k, k, 5, 1, 1) ﻿ ﻿ // got 15 ? somehow, step flipped to -1, instead of swapping limits.

XCas> sum(k, k, 5.1, 1) ﻿ ﻿ ﻿ // got -14.0 ? expected -sum(k, k, 2, 4.1) = -(2+3+4) = -9

Missing step is not equivalent to default step=1

XCas> factor(sum(k, k, a, b)) ﻿ ﻿ // (b+a)*(b-a+1)/2
XCas> sum(k, k, a, b, 1) ﻿ ﻿ ﻿ ﻿ ﻿ ﻿ ﻿ ﻿ ﻿ // "Unable to sort boundaries a,b Error: Bad Argument Value"
08-26-2020, 09:58 PM (This post was last modified: 11-23-2020 07:24 PM by Albert Chan.)
Post: #2
 Albert Chan Senior Member Posts: 2,066 Joined: Jul 2018
RE: XCas sum limit confusion
This may explain the reason for (a,b) → (b+1,a-1), if a>b+1
Say, we have a function F(x) = sum(f(t), t=-inf .. x-1)

If a ≤ b, S1 = sum(f(t), t=a .. b) = F(b+1) - F(a)

If a > b, we could flip the limit, just like doing integrals.

S2 = - sum(f(t), t=b .. a) = -(F(a+1) - F(b)) = F(b) - F(a+1)

But, S1 != -S2. To aim for symmetry, we shift the limit a bit:

S2 = - sum(f(t), t=b+1 .. a-1) = F(a) - F(b+1) = -S1

Sympy Gamma: ﻿ Sum(k, (k, 5, 1)) = -(2 + 3 + 4) = -9
But, the cure maybe worse than the disease.

Mathematica also does closed end limit, but generated a list. (conceptually)
If the list is empty, there is nothing to sum.
We lost the symmetry, but it is simple to understand.

Mathematica: ﻿ ﻿ ﻿ ﻿ Sum(k, (k, 5, 1)) = 0

Open-ended sum is very elegant:

S1 = sum(f(t), t = a .. b-1) = F(b) - F(a)
S2 = sum(f(t), t = b .. a-1) = F(a) - F(b)

We got nice symmetry, without worrying a, b sort order.

Also of interest: Should array indices start at 0 or 1 ?
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)