Detailed Information - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


sum

definite and indefinite symbolic summation

Sum

inert form of sum

 

Calling Sequence

Parameters

Basic Information

Description

Note

Details

Options

Examples

Examples for the parametric case

Comparing sum and add

References

Compatibility

Calling Sequence

sum(f, k)

kf

sum(f, k=m..n, parametric, formal=b)

k=mnf

sum(f, k=alpha)

k=αf

sum(f, k=expr)

k=exprf

Sum(f, k)

kf

Sum(f, k=m..n)

k=mnf

Sum(f, k=alpha)

k=αf

Sum(f, k=expr)

k=exprf

Parameters

f

-

expression

k

-

name; summation index

m, n

-

integers or arbitrary expressions

parametric

-

(optional) literal name

b

-

(optional) either true or false

alpha

-

RootOf expression

expr

-

expression, of type algebraic, not containing k

Basic Information

• 

This help page contains complete information about the sum command. For basic information on the sum command, see the sum help page.

Description

• 

The sum command (definition of sum) is for symbolic summation. It is used to compute a closed form for an indefinite or definite sum. A typical example is sum(k,k=0..n-1), which returns 12n212n.

• 

You can enter the sum command using either the 1-D or 2-D calling sequence. For example, sum(k^2, k) is equivalent to kk2.

Note

• 

To add a finite sequence of values, rather than compute a formula, use the add command.  For example, add(k, k=0..9) returns 45.  Although the sum command can often be used to compute explicit sums, it is strongly recommended that the add command be used in programs if an explicit sum is needed, in particular, when summing over all elements of a list, Array, Matrix, or similar data structure. For more details and examples, see the Comparing sum and add section in this help page.

Details

• 

The call sum(f, k) computes an indefinite sum of fk with respect to k. It computes an anti-difference gk of fk such that gk+1gk=fk in general (SumTools[IndefiniteSum][Indefinite]).

• 

The call sum(f, k=m..n) computes the definite sum of fk over the given range m..n. That is, it computes fm+fm+1+...+fn. If m=n+1, the value returned is 0. If m>n+1 are integers, the value returned is -sum(f, k=n+1..m-1). With these conventions, the following holds for all integers l,m,n.

k=lm1f+k=mnf=k=lnf

• 

The call sum(f, k=alpha) computes the definite sum of fk summed over the roots of a polynomial given by alpha where alpha must be a RootOf.

• 

The call sum(f, k=expr) substitutes the value of expr for k in f.

• 

For indefinite summation, Maple uses the following methods:

a. 

Polynomials are summed using a formula based on Bernoulli polynomials.

b. 

Rational functions of k are summed using the algorithm that solves the additive decomposition problem of rational functions. The result is a rational function plus a sum of terms involving the Polygamma function and its derivatives.

c. 

Hypergeometric terms, for example, expressions containing factorials (including binomial coefficients) and powers, are summed using Gosper's algorithm and the algorithm that solves the additive decomposition problem of hypergeometric terms. An extension of Gosper's algorithm is used to handle summands which are sums of hypergeometric terms. Koepf's extension to Gosper's algorithm is used to handle j-fold hypergeometric terms.

d. 

The method of accurate summation.

e. 

Additionally, a library extension mechanism is used to include sums for which an algorithmic approach to finding closed forms is not yet implemented or does not yet exist (that is, the pattern match approach is employed in principal). Currently the computable summands include expressions containing the harmonic function; the logarithmic function; the digamma and polygamma functions; and the sine, cosine, and exponential functions.

• 

For definite sums, if n-m is a small integer, the sum is computed directly by adding up terms. Otherwise, Maple uses the following methods:

a. 

Classical telescoping computes a closed form of the definite sum of f over the specified range of k using telescoping method, or Newton-Leibniz's formula. That is, it first computes a closed form of the corresponding indefinite sum.

b. 

Creative telescoping method for computing closed forms of definite sums of hypergeometric terms.

c. 

Conversion method computes a closed form of the definite sum of f over the specified range of k by first converting the specified sum into hypergeometric functions. If possible, the output is then converted to standard functions.

  

Note: To access directly one of the above three methods, see Telescoping for (a), CreativeTelescoping for (b), and pFqToStandardFunctions for (c).

d. 

As in the case for indefinite sums, the pattern-match approach is also employed.

• 

For definite sums depending on one or more parameters other than the summation variable, the result will in general be a function of these parameters. However, that result may only be correct in a generic sense; it may not be correct for all possible values of the parameter(s). Use option parametric (see the Options section in this help page) to obtain a complete case discussion that is correct for all possible integer values of the parameter(s).

• 

If Maple cannot find a closed form for the summation, the function call is returned. (Maple displays the sum function using a stylized summation sign.)

• 

The capitalized function name Sum is the inert sum function, which simply returns unevaluated. It appears gray so that it is easily distinguished from a returned sum calling sequence.

• 

For divergent sums, the sum command may return infinity, -infinity, unevaluated, or a finite result correct in the sense of analytic continuation. This behavior can be changed by setting the _EnvFormal environment variable or using the formal option. By default, the _EnvFormal environment variable is unassigned.

– 

If _EnvFormal is assigned true, the sum command uses resummation methods to return a finite result for various classes of divergent sums.

– 

If _EnvFormal is assigned false, the sum command uses more convergence testing to detect divergence for infinite sums. It more often returns infinity, -infinity, or unevaluated for divergent sums. This may slow down the computation.

– 

If _EnvFormal is assigned false and the summation bounds are numeric, the sum command also tries harder to detect removable singularities in the interval of summation, and returns an error in that case. By default, sum will try to remove them.

• 

The SumTools[IndefiniteSum] package provides an extension mechanism (AddIndefiniteSum) that is used by sum. Using this facility, you can add summation definitions related to additional special functions.

• 

For numerical summation, see evalf/Sum.

• 

There are two cases where the result of a call to sum may contain inert Sums:

– 

When option parametric is used (see the Examples for the parametric case section in this help page).

– 

When a definite hypergeometric sum can be expressed in terms of nested indefinite sums, these may be returned in Sum form if they are too costly or too complicated to be evaluated in closed form.

Options

• 

If the option parametric is specified for a definite parametric sum, then a result is returned that is valid at least for all possible integer values of the parameter(s) occurring in the summand or the summation bounds. In general, the result is expressed in terms of piecewise functions. The piecewise result may contain FAIL or undefined. Here, FAIL is used to indicate that there is a singularity in the range of summation, and undefined indicates that the sum is divergent.

• 

Using the option formal is equivalent to assigning to the environment variable _EnvFormal (see above): specifying formal=true (or just formal for short) is equivalent to assigning true to _EnvFormal, and formal=false is equivalent to assigning false to _EnvFormal.

Examples

Indefinite sums

Polynomials:

sumk2,k

13k312k2+16k

(1)

Rationals:

sumk+k2+512k1k2+512k1k,k

13k32+5213k12+5213k+12+524Ψk533+5

(2)

Hypergeometric terms:

sum4kk4binomial2k,k,k

2k163k4140k3+60k2+26k64k6932kk

(3)

2-fold hypergeometric terms:

sumk12k!,k

2k2!+2k2+12!

(4)

Sum of hypergeometric terms:

sum22k1k2k+1binomial2k,k+k+124k+1k+2k+3,k

22k12kkk+k14k+13k+2

(5)

Accurate summation

sumΓk+1ΓkΨk,k

k4k36k26k5Γk+1ΓkΨkk2+k+3k5k410k39k22Γk+2Γk+1Ψk+1kk2+k+3+k+1k35k2+4k2Γk+3Γk+2Ψk+2kk2+k+3

(6)

Additive decomposition of hypergeometric terms:

sumk22k12kk+1k2k+3!,k

k+3_i=1k12_i+412k+kk2+2k1_i=1k12_i+412k2

(7)

Sum of a logarithm of a rational function (provided the argument of the logarithm has constant sign):

sumln2k+1,kassuming0k

kln2+lnΓk+12

(8)

sumln2k+1,kassumingk1

kln2lnΓ12k+Ikπ

(9)

Library extension mechanism:

sumsinkcosk+1Ψk,k

sin1k2csc1cosk22Ψk+1k+k+Ψk+γ

(10)

Definite sums

Classical telescoping:

sumbinomial2n2k,nk24k2k2k+1binomial2k,k1,k

24k2n2knk2n+2k122kkk2n+1

(11)

sumbinomial2n2k,nk24k2k2k+1binomial2k,k1,k=1..n

2n2n116n+822n+1

(12)

Creative telescoping:

sumbinomial2n,2k2,k=0..n

−1n2nn2+4n2n2

(13)

Conversion method:

sum22kπ12ΓknΓk+nΓ2k+1zk,k=0..assumingabsz1

πcos2narcsinzcscπnn

(14)

Pattern match (Abel's type):

sum2+kk21+nknkk!nk!,k=0..n

n+3n4n!n+3n16n1!

(15)

Maple returns the call unevaluated if it cannot find a closed form.

sumakxk,k=0..n

k=0nakxk

(16)

If the inert function is used, Maple returns unevaluated.

Sumkk+1,k=0..n=sumkk+1,k=0..n

k=0nkk+1=n+1Ψn+2γ

(17)

Some definite sums may return an expression containing inert Sums.

sumbinomialn,3k,k=n+1..1

2292n+2I12I32n93+4I9+2I12+I32n93+4I9+_z2=0n11+I3_z23_z3=0_z21I31I3_z33I_z4=0_z311+I3_z4455_z44+1843_z43+2524_z42+1340_z4+2283_z4_z432_z4_z4+22_z4+3_z4+12_z4+1+19I1932_z33832n

(18)

sumexpk,k

ⅇkⅇ−11

(19)

sum1k!,k=0..

ⅇ

(20)

sum1k2,k=1..

π26

(21)

sumkk+1,k=RootOfx32

2

(22)

Formal sums

sumk32,k=1..

(23)

sum1k,k=1..

k=1−1k

(24)

If _EnvFormal is assigned true, the sum command uses resummation methods to return a finite result for various classes of divergent sums.

_EnvFormaltrue

_EnvFormaltrue

(25)

sumk32,k=1..

ζ32

(26)

sum1k,k=1..

12

(27)

Setting _EnvFormal to false will also trigger detection of removable singularities in the interval of summation for numerical bounds.

sumsinxx,x=1..1

1+2sin1

(28)

_EnvFormalfalse

_EnvFormalfalse

(29)

sumsinxx,x=1..1

Error, (in SumTools:-DefiniteSum:-ClosedForm) summand is singular in the interval of summation

_EnvFormal_EnvFormal

_EnvFormal_EnvFormal

(30)

Using option formal instead of _EnvFormal has the advantage that the effect is local to the sum command; no "undoing" is necessary.

sum1k,k=1..,formal

12

(31)

sum1k,k=1..

k=1−1k

(32)

Examples for the parametric case

The summand is a hypergeometric term in the summation variable.

F := binomial(2*k-3,k)/4^k;

F2k3k4k

(33)

Sum(F,k=0..n) = sum(F,k=0..n,parametric);

k=0n2k3k4k=2n1n2n+44n+1n034n=12n1n2n+44n+1+382n

(34)

The summand is a rational function in the summation variable.

sum(1/k, k=a..b);

k=ab1k

(35)

sum(1/k, k=a..b, parametric);

0a=b+1Ψb+1Ψa1aand0bΨbΨ1aa0andb−1FAILotherwise

(36)

The summand is a hypergeometric term in two variables.

Sum((-1)^k*binomial(n, k)*k, k=0..n) = sum((-1)^k*binomial(n, k)*k, k=0..n, parametric);

k=0n−1knkk=0n0−1n=102n

(37)
  

Without option parametric, the generic answer 0 is returned.

sum((-1)^k*binomial(n, k)*k, k = 0 .. n);

0

(38)

In general, the piecewise expression returned may contain an unevaluated, inert Sum.

sum(x^n/(3*n+2), n = 0 .. infinity, parametric);

LerchPhix,1,233x1x11xn=0xn3n+2otherwise

(39)

Special sums.

Sum(q^n, n=1..infinity) = sum(q^n, n=1..infinity, parametric);

n=1qn=qq1q<11qundefinedotherwise

(40)

Comparing sum and add

The sum command tries to find a formula for a definite sum, while the add command adds a finite sequence of terms.

sum(x^k,k=1..10000);

x10001x1xx1

(41)

f := add(x^k,k=1..10000):

whattype(f);

`+`

(42)

nops(f);

10000

(43)

For short finite sums, the sum command uses the add command.

sum(x^k,k=1..10);

x10+x9+x8+x7+x6+x5+x4+x3+x2+x

(44)

add(x^k,k=1..10);

x10+x9+x8+x7+x6+x5+x4+x3+x2+x

(45)

The add command can be used only if the summation bounds are numeric.

powersum := proc(a,b)
local k;
  sum(3^k, k=a..b);
end proc:

poweradd := proc(a,b)
local k;
  add(3^k, k=a..b);
end proc:

powersum(1,5);

363

(46)

poweradd(1,5);

363

(47)

powersum(1,n);

3n+1232

(48)

poweradd(1,n);

Error, (in poweradd) range bounds in add must be numeric

The results from sum and add differ when the upper bound is less than the lower bound.

sum(x^k,k=5..1);

x4x3x2

(49)

add(x^k,k=5..1);

0

(50)

In contrast to the sum command, the add command has special evaluation rules. Thus, no unevaluation quotes are necessary when summing over an expression that gives an error when evaluated at a non-integer.

v := Vector([1,2,3,4,5]);

v12345

(51)

v[k];

Error, bad index into Vector

add(v[k],k=1..5);

15

(52)

sum(v[k],k=1..5);

Error, bad index into Vector

sum('v[k]',k=1..5);

15

(53)

The summation variable is local to the add command, but not to the sum command. The sum command raises an error if the summation variable has a value.

k := 42;

k42

(54)

add(k,k=1..10);

55

(55)

sum(k,k=1..10);

Error, (in sum) summation variable previously assigned, 2nd argument evaluates to 42 = 1 .. 10

sum('k','k'=1..10);

55

(56)

k := 'k':

In contrast to the sum command, the add command is implemented in the Maple kernel. When it is applicable, it is usually much more efficient. An exception to this rule is the case in which there is a large number of terms and the sum command is able to compute a closed form.

t := time():

for i from 1 to 1000 do
  add(x^k,k=1..10):
end do:
time() - t;

0.007

(57)

t := time():

for i from 1 to 1000 do
  sum(x^k,k=1..10):
end do:
time() - t;

0.028

(58)

t := time():

for i from 1 to 100 do
  add(x^k,k=1..10000):
end do:
time() - t;

1.481

(59)

t := time():

for i from 1 to 100 do
  sum(x^k,k=1..10000):
end do:
time() - t;

0.014

(60)

References

  

Abramov, S.A. "Indefinite Sums of Rational Functions." In Proceedings ISSAC '95, pp. 303-308. Edited by A. H. M. Levelt. New York: ACM Press, 1995.

  

Abramov, S.A.; Carette, J.J.; Geddes, K.O.; and Le, H.Q. "Symbolic Summation in Maple." University of Waterloo Technical Report CS-2002-32, Department of Computer Science, 2002.

  

Abramov, S.A., and Petkovsek, M. "Rational Normal Forms and Minimal Decompositions of Hypergeometric Terms." Journal of Symbolic Computation, (May 2002): 521-543.

  

Abramov, S.A., and Petkovsek, M. "Gosper's Algorithm, Accurate Summation, and the discrete Newton-Leibniz formula." Proceedings ISSAC'05, (2005): 5-12.

  

Abramov, S.A., and van Hoeij, M. "Integration of Solutions of Linear Functional Equations." Integral Transformations and Special Functions, (1999): 3-12.

  

Abramov, S. A., and Zima, E. V. "D'Alembertian Solutions of Inhomogeneous Equations (differential, difference, and some other)." In Proceedings ISSAC '96, pp. 232-240. Edited by Y. N. Lakshman. New York: ACM Press, 1996.

  

Gosper, R.W., Jr. "Decision Procedure for Indefinite Hypergeometric Summation." Proceedings of the National Academy of Sciences, (January 1978): 40-42.

  

Koepf, W. "Algorithms for m-Fold Hypergeometric Summation." Journal of Symbolic Computation, (October 1995): 399-417.

  

Petkovsek, M.; Wilf, H.; and Zeilberger, D. A=B. Wellesley, Massachusetts: A. K. Peters Ltd., 1996.

  

Prudnikov, A. P.; Brychkov, Yu.; and Marichev, O. Integrals and Series, Volume 3: More Special Functions. Gordon and Breach Science, 1990.

  

Roach, K. "Hypergeometric Function Representations." In Proceedings ISSAC '96, pp. 301-308. Edited by Y. N. Lakshman. New York: ACM Press, 1996.

  

van Hoeij, M. "Finite Singularities and Hypergeometric Solutions of Linear Recurrence Equations." Journal of Pure and Applied Algebra, (June 1999): 109-131.

  

Zeilberger, D. "The Method of Creative Telescoping." Journal of Symbolic Computation, (March 1991): 195-204.

Compatibility

• 

The sum command was updated in Maple 2016.

• 

The formal option was introduced in Maple 2016.

• 

For more information on Maple 2016 changes, see Updates in Maple 2016.

See Also

add

collect

convert/StandardFunctions

evalf/Sum

expand

normal

product

RootOf

sum/numerical

SumTools

SumTools[IndefiniteSum][AddIndefiniteSum]