XCas sum limit confusion - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: XCas sum limit confusion (/thread-15503.html) XCas sum limit confusion - Albert Chan - 08-26-2020 07:48 PM 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" RE: XCas sum limit confusion - Albert Chan - 08-26-2020 09:58 PM 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 ? RE: XCas sum limit confusion - Albert Chan - 09-02-2023 12:54 PM For the same reason, product limits behave exactly the same as sum. Cas> Pochhammer(a,n) := product((a+j), j, 0, n-1) Cas> Pochhammer(a, 0)      → 1 Cas> Pochhammer(0, 0)      → 1 When limits get switched, "opposite" for sum negated equivalent to product reciprocal. Pochhammer(a, -|n|) = product((a+j), j, 0, -|n|-1) = 1/product((a+j), j, -|n|, -1) Cas> Pochhammer(a, 3)      → a*(a+1)*(a+2) Cas> Pochhammer(a, -3)     → 1/((a-1)*(a-2)*(a-3))