Mon Feb 16 10:29:09 MST 1998 aquarius% mupad *----* MuPAD 1.4.0 -- Multi Processing Algebra Data Tool /| /| *----* | Copyright (c) 1997 - 98 by SciFace Software GmbH | *--|-* All rights reserved. |/ |/ *----* Licensed to: Michael Wester >> # ----------[ M u P A D ]---------- # >> # ---------- Initialization ---------- # >> TEXTWIDTH:= 80: >> read("../../Time.mupad"): >> # ---------- Sums ---------- # >> # Simplify the sum below to sum(x[i]^2, i = 1..n) - sum(x[i], i = 1..n)^2/n # >> xbar:= sum(x[j], j = 1..n) / n; sum(x[j], j = 1..n) ------------------- n Time: 1440 msec Type: "_mult" >> sum((x[i] - xbar)^2, i = 1..n); / / sum(x[j], j = 1..n) \2 \ sum| | x[i] - ------------------- | , i = 1..n | \ \ n / / Time: 1340 msec Type: "sum" >> map(%, expand); / 2 \ | 2 2 x[i] sum(x[j], j = 1..n) sum(x[j], j = 1..n) | sum| x[i] - -------------------------- + --------------------, i = 1..n | | n 2 | \ n / Time: 100 msec Type: "sum" >> xbar:= NIL: >> # Derivation of the least squares fitting of data points (x[i], y[i]) to a &> line y = m x + b. See G. Keady, ``Using Maple's linalg package with Zill &> and Cullen _Advanced Engineering Mathematics_, Part II: Vectors, Matrices &> and Vector Calculus'', University of Western Australia, &> ftp://maths.uwa.edu.au/pub/keady/ # >> f:= sum((y[i] - m*x[i] - b)^2, i = 1..n): >> solve({diff(f, m) = 0, diff(f, b) = 0}, {m, b}); solve({sum(2 b - 2 y[i] + 2 m x[i], i = 1..n) = 0, sum(-2 x[i] (y[i] - b - m x[i]), i = 1..n) = 0}, {b, m}) Time: 5050 msec Type: "solve" >> f:= NIL: >> # Indefinite sum => (-1)^n binomial(2 n, n). See Herbert S, Wilf, &> ``IDENTITIES and their computer proofs'', University of Pennsylvania. # >> sum((-1)^k * binomial(2*n, k)^2, k); k 2 sum((-1) binomial(2 n, k) , k) Time: 2080 msec Type: "sum" >> # Check whether the full Gosper algorithm is implemented &> => 1/2^(n + 1) binomial(n, k - 1) # >> sum(binomial(n, k)/2^n - binomial(n + 1, k)/2^(n + 1), k); k binomial(n + 1, k) - 2 k binomial(n, k) ----------------------------------------- n n n 4 k 2 - 2 2 - 2 n 2 Time: 8400 msec Type: "_mult" >> Factor(%); k (binomial(n + 1, k) - 2 binomial(n, k)) ----------------------------------------- n 2 2 (2 k - n - 1) Time: 520 msec Type: "_mult" >> # Dixon's identity (check whether Zeilberger's algorithm is implemented). &> Note that the indefinite sum is equivalent to the definite &> sum(..., k = -min(a, b, c)..min(a, b, c)) => (a + b + c)!/(a! b! c!) &> [Wilf] # >> sum((-1)^k * binomial(a+b, a+k) * binomial(b+c, b+k) &> * binomial(c+a, c+k), k); k sum(binomial(a + b, a + k) binomial(a + c, c + k) binomial(b + c, b + k) (-1) , k) Time: 14810 msec Type: "sum" >> # Telescoping sum => g(n + 1) - g(0) # >> sum(g(k + 1) - g(k), k = 0..n); sum(g(k + 1) - g(k), k = 0..n) Time: 440 msec Type: "sum" >> # => n^2 (n + 1)^2 / 4 # >> sum(k^3, k = 1..n); 2 3 4 n n n -- + -- + -- 4 2 4 Time: 300 msec Type: "_plus" >> Factor(%); 2 2 n (n + 1) ----------- 4 Time: 310 msec Type: "_mult" >> # See Daniel I. A. Cohen, _Basic Techniques of Combinatorial Theory_, John &> Wiley and Sons, 1978, p. 60. The following two sums can be derived directly &> from the binomial theorem: &> sum(k^2 * binomial(n, k) * x^k, k = 1..n) = n x (1 + n x) (1 + x)^(n - 2) &> => n (n + 1) 2^(n - 2) [Cohen, p. 60] # >> sum(k^2 * binomial(n, k), k = 1..n); n - 1 n (n + 1) 2 ---------------- 2 Time: 7280 msec Type: "_mult" >> # => [2^(n + 1) - 1]/(n + 1) [Cohen, p. 83] # >> sum(binomial(n, k)/(k + 1), k = 0..n); / / 1 u2(n) (2 n + 2) \ \ solve| rec| u2(n + 1) = ----- + ---------------, u2(n), {u2(0) = 1} | | \ \ n + 2 n + 2 / / Time: 3720 msec Type: "solve" >> # Vandermonde's identity => binomial(n + m, r) [Cohen, p. 31] # >> sum(binomial(n, k) * binomial(m, r - k), k = 0..r); r (-1) fact(r - m - n) ---------------------------------- fact(r) (r - m - n) gamma(- m - n) Time: 17690 msec Type: "_mult" >> rewrite(%, fact); r (-1) fact(r - m - n) ------------------------------------- fact(r) (r - m - n) fact(- m - n - 1) Time: 280 msec Type: "_mult" >> # => Fibonacci[2 n] [Cohen, p. 88] # >> sum(binomial(n, k) * numlib::fibonacci(k), k = 0..n); sum(binomial(n, k) numlib::fibonacci(k), k = 0..n) Time: 640 msec Type: "sum" >> # => Fibonacci[n] Fibonacci[n + 1] [Cohen, p. 65] # >> sum(numlib::fibonacci(k)^2, k = 1..n); 2 sum(numlib::fibonacci(k) , k = 1..n) Time: 330 msec Type: "sum" >> # => 1/2 cot(x/2) - cos([2 n + 1] x/2)/[2 sin(x/2)] &> See Konrad Knopp, _Theory and Application of Infinite Series_, Dover &> Publications, Inc., 1990, p. 480. # >> q:= sum(sin(k*x), k = 1..n); (I exp(-I x) - I exp(I x) + I exp(-I n x) - I exp(I n x) - I exp(- I x - I n x) + I exp(I x + I n x)) / 4 - 2 exp(-I x) - 2 exp(I x) Time: 5660 msec Type: "_mult" >> assume(x, Type::RealNum): >> assume(n, Type::RealNum): >> Factor(simplify(Factor(expand(rewrite(rectform(q), tan))))); / x \ / x \ cos| - | - cos| - + n x | \ 2 / \ 2 / ------------------------- / x \ 2 sin| - | \ 2 / Time: 12920 msec Type: "_mult" >> unassume(x, Type::RealNum): >> unassume(n, Type::RealNum): >> q:= NIL: >> # => sin(n x)^2/sin x [Gradshteyn and Ryzhik 1.342(3)] # >> q:= sum(sin((2*k - 1)*x), k = 1..n); (2 I exp(-I x) - 2 I exp(I x) - I exp(- I x - 2 I n x) - I exp(2 I n x - I x) + I exp(I x - 2 I n x) + I exp(I x + 2 I n x)) / 4 - 2 exp(-2 I x) - 2 exp(2 I x) Time: 7880 msec Type: "_mult" >> assume(x, Type::RealNum): >> assume(n, Type::RealNum): >> Factor(expand(rectform(q))); 2 2 sin(x) (sin(n x) - cos(n x) + 1) - ---------------------------------- 2 2 cos(x) - sin(x) - 1 Time: 3980 msec Type: "_mult" >> subs(%, {cos(x)^2 = 1 - sin(x)^2, cos(n*x)^2 = 1 - sin(n*x)^2}); 2 sin(n x) --------- sin(x) Time: 330 msec Type: "_mult" >> unassume(x, Type::RealNum): >> unassume(n, Type::RealNum): >> q:= NIL: >> # => Fibonacci[n + 1] [Cohen, p. 87] # >> sum(binomial(n - k, k), k = 0..floor(n/2)); / / n \ \ sum| binomial(n - k, k), k = 0..floor| - | | \ \ 2 / / Time: 12720 msec Type: "sum" >> # => pi^2 / 6 + zeta(3) =~ 2.84699 # >> sum(1/k^2 + 1/k^3, k = 1..infinity); 2 PI zeta(3) + --- 6 Time: 4920 msec Type: "_plus" >> float(%); 2.84699097 Time: 390 msec Type: DOM_FLOAT >> # => pi^2/12 - 1/2 (log 2)^2 [Gradshteyn and Ryzhik 0.241(2)] # >> sum(1/(2^k*k^2), k = 1..infinity); 2 2 PI ln(2) --- - ------ 12 2 Time: 740 msec Type: "_plus" >> # => pi/12 sqrt(3) - 1/4 log 3 [Knopp, p. 268] # >> sum(1/((3*k + 1)*(3*k + 2)*(3*k + 3)), k = 0..infinity); EULER psi(1/3) psi(2/3) / psi(k + 1) psi(k + 1/3) psi(k + 2/3) ----- - -------- + -------- + limit| ---------- + ------------ - ------------, 6 6 3 \ 6 6 3 \ k = infinity | / Time: 13260 msec Type: "_plus" >> # => 1/2 (2^(n - 1) + 2^(n/2) cos(n pi/4)) [Gradshteyn and Ryzhik 0.153(1)] &> # >> sum(binomial(n, 4*k), k = 0..infinity); sum(binomial(n, 4 k), k = 0..infinity) Time: 27980 msec Type: "sum" >> # => 1 [Knopp, p. 233] # >> sum(1/(sqrt(k*(k + 1)) * (sqrt(k) + sqrt(k + 1))), k = 1..infinity); / 1 \ sum| ----------------------------------, k = 1..infinity | | 1/2 1/2 1/2 | \ (k (k + 1)) (k + (k + 1) ) / Time: 790 msec Type: "sum" >> # => 1/sqrt([1 - x y]^2 - 4 x^2) (| x y | < 1 and -1 <= x < 1). &> From Evangelos A. Coutsias, Michael J. Wester and Alan S. Perelson, ``A &> Nucleation Theory of Cell Surface Capping'', draft. # >> sum(sum(binomial(n, k)*binomial(n - k, n - 2*k)*x^n*y^(n - 2*k), &> k = 0..floor(n/2)), &> n = 0..infinity); Error: Can't evaluate to boolean [_less]; in procedure 'Sum::gosper2' >> # An equivalent summation to the above is: # >> sum(sum(n!/(k!^2*(n - 2*k)!)*(x/y)^k*(x*y)^(n - k), n = 2*k..infinity), &> k = 0..infinity); / / / x \k n - k \ \ | | fact(n) | - | (x y) | | | | \ y / | | sum| sum| -------------------------, n = 2 k..infinity |, k = 0..infinity | | | 2 | | \ \ fact(k) fact(n - 2 k) / / Time: 3010 msec Type: "sum" >> # => pi/2 [Knopp, p. 269] # >> sum(product(k/(2*k - 1), k = 1..m), m = 2..infinity); / 1/2 - m - 1 \ | 2 PI gamma(m + 1) 2 | sum| -----------------------------, m = 2..infinity | \ gamma(m + 1/2) / Time: 940 msec Type: "sum" >> # ---------- Quit ---------- # >> quit real 164.22 user 162.64 sys 1.16