ABSTRACT

Differentiating throughout, and dividing the resulting relationship by the original version

∑ ∞

=

− ∞

=

=

− −

1 2

21 1

k

jk

j

j

k

k

Replacing x by the displacement operator D (Dv(i) = v(i+1)) and applying both sides of the derived relationship to v(0), the transformation (2) is obtained. Euler's transformation may be applied to the series on the right-hand side of relationship (2): denoting the Euler sum of a series by E{...}, relationship (2) yields

where

kk jvjv (3)

Each series (3) involves a subsequent of the terms of the series (1), and may converge far more rapidly than the latter. For example, when v(i) = i-α (α>1),

but

−− +=′ ∑ (e.g., when α=2, 2-n decreases to zero more rapidly than n-1.) Again when v(i)=xi (x<1) the two remainder terms are O(xn) and O(xl) (where l=2n) respectively. The auxiliary sums (3) with even values of j may be obtained from values of sums previously determined: ( ))()()2( 21 jvjvjv −′=′ (4) Thus the sum of the component series (3) may often be evaluated directly or indirectly by direct summation; the sum of the alternating series of sums on the right-hand side of relationship (2) may then be obtained by use of Euler's transformation. In this way the numerical sum of a large number of terms of the series (1) is effectively approximated by a weighted sum which involves relatively few of them. It may occur that the auxiliary series (3) do not converge with sufficient rapidity. In such a case, application of the transformation (2) may be repeated:

l ljvEjv (5)

where

and relationship (3) still holds. For odd j, the terms v"(j,l) are obtained, directly or indirectly, by summation; they are inserted into an Euler process to yield terms v'(j) given by formula (5); the v'(j) with even j are derived by use of relationship (4); the v'(j) are inserted into a further Euler process to yield the sum (1). Clearly the above process of recursion may be extended: letting i be an integer vector with components i(1), i(2),..., and v(j)(i) be a function of the first j components of i,

=

=

−= 1 1)1(

)1(1)1( )()1()( i i

where

and v(k)(i) is obtained by direct summation:

where f(k+1)(i), s(k+1)(i) are integer functions of the first k+1 components if i, and may be derived by use of the following recursion: f(1) = 1, s(1) = 2i(k+1)-1 f(j+1) = f(j)s(j) s(j+1) = 2s(j)i(k-j+1)-1 (j=1,...,k-1) f(k+1)(i) = f(k)s(k), s(k+1)(i) = i(1)s(k). For fixed i(1), i(2),..., i(j-1), v(j)(i) with even values of i(j) may be determined without summation or transformation: writing v(j)(i) as v(j)(i(1),i(2),...,i(j)), etc. v(j)(i(1),i(2),...,i(j-1),2i(j)) = ½(v(j)(i(1),i(2),...,i(j-1),i(j)) - f(j+1)(i(1),i(2),...,i(j),1)v(s(j+1)(i(1),i(2),...,i(j),1))) (7) for j=1,...,k. For many series

of real terms with consistent sign

If R(n)≤ε for n=m,m+1,...,m+tim-1, ε being a real tolerance, m and tim being positive integers, it may reasonably be inferred that the partial sum

represents the sum of the series in question to the stated tolerance. This test is used to establish the level k at which the recursion functions during the computation. With integer values of m and tim supplied by the user, the above test is first applied to the series (1) itself, and if the test is passed, no transformation is carried out. If the test fails, then with i(1)=1, the test is applied to the series (6) with k=1; if this test fails, it is applied to the series (6) with k=2 and i(1)=i(2)=1, and so on; acceptance of the test determines the value of k for which v(k)(i) is to be determined, directly or indirectly, by summation. With i(1)=i(2)=...=i(k)=1, v(k)(i) is determined by summation, and inserted into the Euler process to determine v(k-1)(i). With i(1)=i(2)=...=i(k-1)=1, i(k)=2, v(k)(i) is determined by use of relationship (7) with j=k, and -v(k)(i) is inserted into the above Euler process. With i(1)=i(2)=...=i(k-1)=1, i(k)=3, v(k)(i) is determined by summation, and so on. When the Euler process produces a transformed sum (namely v(k-1)(1,1,...,1)) it is inserted into the penultimate Euler process. v(k-1)(i) with i(1)=i(2)=...=i(k-1), i(k-1)=2 is determined by use of relationship (7) with j=k-1. The rate of convergence of the series (6) with k replaced by k-1 is now tested as described above; if the test is passed, the v(k-1)(i) are determined by direct summation; otherwise k is increased to a level at which convergence is sufficiently rapid, and the process described above is continued; testing rate of convergence takes place after the termination of each Euler process. Finally the Euler process involving the terms v(1)(i) terminates, and the transformed sum of the series (1) is obtained. Procedure parameters: double sumposseries (method,maxaddup,maxzero,maxrecurs,machexp,tim) sumposseries: delivers the computed sum of the infinite series; method: a class that defines a procedure ai, this class must implement the

AE_sumposseries_method interface; double ai(double x) this procedure is the x-th term of the series, x ≥ 1; maxaddup: int; entry: upper limit for the number of straightforward additions

(value of m above); maxzero: double; entry: tolerance in the Euler summation, see tim below; maxzero is

also used as a tolerance for maxaddup straightforward additions;

maxrecurs: int; entry: upper limit for the recursion depth of the Van Wijngaarden

transformation; machexp: int; entry: in order to avoid overflow and evaluation of those terms

which can be neglected, machexp has to be the largest admissible value for which terms with index k*(2machexp) can be computed (k is small); otherwise, overflow might occur in computing a value for the parameter I (in procedure ai), which can be an unusually high power of 2;

tim: int; entry: tolerance in the Euler summation; the summation is

continued until tim successive terms of the transformed series are in absolute value less than maxzero.