# Summation

### From Wikipedia, the free encyclopedia

**Summation** is the addition of a set of numbers; the result is their *sum* or *total*. An interim or present total of a summation process is termed the *running total*. The "numbers" to be summed may be natural numbers, complex numbers, matrices, or still more complicated objects. An infinite sum is a subtle procedure known as a series. Note that the term summation has a special meaning in the context of divergent series related to extrapolation.

## Contents |

## [edit] Notation

The summation of 1, 2, and 4 is 1 + 2 + 4 = 7. The sum is 7. Since addition is associative, it does not matter whether we interpret "1 + 2 + 4" as (1 + 2) + 4 or as 1 + (2 + 4); the result is the same, so parentheses are usually omitted in a sum. Finite addition is also commutative, so the order in which the numbers are written does not affect its sum. (For issues with infinite summation, see absolute convergence.)

If a sum has too many terms to be written out individually, the sum may be written with an ellipsis to mark out the missing terms. Thus, the sum of all the natural numbers from 1 to 100 is 1 + 2 + … + 99 + 100 = 5050.

### [edit] Capital-sigma notation

Mathematical notation has a special representation for compactly representing summation of many similar terms: the *summation symbol* ∑ (U+2211), a large upright capital Sigma. This is defined thus:

The subscript gives the symbol for an index variable, *i*. Here, *i* represents the **index of summation**; *m* is the **lower bound of summation**, and *n* is the **upper bound of summation**. Here *i* = *m* under the summation symbol means that the index *i* starts out equal to *m*. Successive values of *i* are found by adding 1 to the previous value of *i*, stopping when *i* = *n*. We could as well have used *k* instead of *i*, as in

- .

Informal writing sometimes omits the definition of the index and bounds of summation when these are clear from context, as in

which is informally equivalent to

- .

One often sees generalizations of this notation in which an arbitrary logical condition is supplied, and the sum is intended to be taken over all values satisfying the condition. For example:

is the sum of *f*(*k*) over all (integer) *k* in the specified range,

is the sum of *f*(*x*) over all elements *x* in the set *S*, and

is the sum of μ(*d*) over all integers *d* dividing *n*.

- (Remark: Although the name of the dummy variable does not matter (by definition), one usually uses letters from the middle of the alphabet (
*i*through*q*) to denote integers, if there is a risk of confusion. For example, even if there should be no doubt about the interpretation, it could look slightly confusing to many mathematicians to see*x*instead of*k*in the above formulae involving*k*. See also typographical conventions in mathematical formulae.)

There are also ways to generalize the use of many sigma signs. For example,

is the same as

A similar notation is applied when it comes to finding multiplicative products; the same basic structure is used, with ∏, or the capital pi, replacing the ∑.

### [edit] Programming language notation

Summations can also be represented in a programming language. Some languages use a notation for summation similar to the mathematical one. For example, this is Python:

sum(x[m:n+1])

and this is Fortran (or Matlab):

sum(x(m:n))

and this is J:

+/x

and this is Haskell:

fold (+) 0 x

and this is Scheme:

(apply + x)

In other languages loops are used, as in the following Visual Basic/VBScript program:

Sum = 0 For I = M To N Sum = Sum + X(I) Next I

or the following C/C++/C#/Java code, which assumes that the variables `m`

and `n`

are defined as integer types no wider than `int`

, such that `m`

≥ `n`

, and that the variable `x`

is defined as an array of values of integer type no wider than `int`

, containing at least `m`

− `n`

+ 1 defined elements:

int i; int sum = 0; for (i = m; i <= n; i++) { sum += x[i]; }

In some cases a loop can be written more concisely, as in this Perl code:

$sum = 0; $sum += $x[$_] for ($m..$n);

or these alternative Ruby expressions:

x[m..n].inject{|a,b| a+b} x[m..n].inject(0){|a,b| a+b}

or in C++, using its standard library:

std::accumulate(&x[m], &x[n + 1], 0)

when `x` is an built-in array or a `std::vector`.

Note that most of these examples begin by initializing the sum variable to 0, the identity element for addition. (See "special cases" below).

Also note that the traditional ∑ notation allows for the upper bound to be less than the lower bound. In this case, the index variable is initialized with the upper bound instead of the lower bound, and it is decremented instead of incremented. Since addition is commutative, this might also be accomplished by swapping the upper and lower bound and incrementing in a positive direction as usual.

Also note that the ∑ notation evaluates to a definite value, while most of the loop constructs used above are only valid in an imperative programming language's statement context, requiring the use of an extra variable to hold the final value. It is the variable which would then be used in a larger expression.

The exact meaning of ∑, and therefore its translation into a programming language, changes depending on the data type of the subscript and upper bound. In other words, ∑ is an overloaded symbol.

In the above examples, the subscript of ∑ was translated into an assignment statement to an index variable at the beginning of a `for`

loop. But the subscript is not always an assignment statement. Sometimes the subscript sets up the iterator for a `foreach`

loop, and sometimes the subscript is itself an array, with no index variable or iterator provided. Other times, the subscript is merely a Boolean expression that contains an embedded variable, implying to a human, but not to a computer, that every value of the value should be used where the Boolean expression evaluates to true.

In the example below:

*x* is an iterator, which implies a `foreach`

loop, but *S* is a set, which is an array-like data structure that can store values of mixed type. The summation routine for a set would have to account for the fact that it is possible to store non-numerical data in a set.

The return value of ∑ is a scalar in all examples given above.

### [edit] Special cases

It is possible to sum fewer than 2 numbers:

- If one sums the single term
*x*, then the sum is*x*. - If one sums zero terms, then the sum is zero, because zero is the identity for addition. This is known as the
*empty sum*.

These degenerate cases are usually only used when the summation notation gives a degenerate result in a special case. For example, if *m* = *n* in the definition above, then there is only one term in the sum; if *m* > *n*, then there is none.

## [edit] Approximation by definite integrals

Many such approximations can be obtained by the following connection between sums and integrals, which holds for any:

increasing function *f*:

decreasing function *f*:

For more general approximations, see the Euler–Maclaurin formula.

For functions that are integrable on the interval [*a*, *b*], the Riemann sum can be used as an approximation of the definite integral. For example, the following formula is the left Riemann sum with equal partitioning of the interval:

The accuracy of such an approximation increases with the number *n* of subintervals, such that:

## [edit] Identities

The following are useful identities:

- , where 'C' is a distributed constant. (See Scalar multiplication)
- , where 'C' is a constant.
- , definition of multiplication where n is an integer multiplier to x
- (see arithmetic series)
- (Special case of the arithmetic series)
- where
*B*_{k}is the*k*th Bernoulli number.

- (see geometric series)
- (special case of the above where
*m*= 0)

- (see binomial coefficient)

- (See Product of a series)
- (See Infinite limits)
- , for binomial expansion

## [edit] Growth rates

The following are useful approximations (using theta notation):

- for real
*c*greater than −1 - for real
*c*greater than 1 - for nonnegative real
*c* - for nonnegative real
*c*,*d* - for nonnegative real
*b*> 1,*c*,*d*

## [edit] See also

- Einstein notation
- Checksum
- Product (mathematics)
- Kahan summation algorithm
- Iterated binary operation

## [edit] References

## [edit] Further reading

- Nicholas J. Higham, "The accuracy of floating point summation",
*SIAM J. Scientific Computing***14**(4), 783–799 (1993).