Karim Belabas on Thu, 02 Jun 2011 10:07:03 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Multiple Summation Question |
* McLaughlin, James [2011-06-01 22:42]: > How can I set up a program to do multiple summation of the form, say, > Sum_{j_1=1}^1 Sum_{j_2=1}^2 ... Sum_{j_k=1}^k ( j_1^j_1+ j_2^j_2 + j_k^j_k) that will work for any integer k >=1? > > What I would like is a single program that would compute the value of > this sum for an particular, after specifying the only the value of k. > My problems are that I do not know how to write a program that creates > the k different summation variables j_1, ... j_k after specifying only > what particular value k has, The first problem is simple : ? loop(k) = forvec(J = vector(k,i,[1,i]), print(J)); ? loop(3) [1, 1, 1] [1, 1, 2] [1, 1, 3] [1, 2, 1] [1, 2, 2] [1, 2, 3] > and even if I can define these summation variables, how do I set up the > k-fold summation Sum_{j_1=1}^1 Sum_{j_2=1}^2 ... Sum_{j_k=1}^k . ? f(J) = sum(i=1,#J, J[i]^J[i]) ? SUM(k) = my (s=0); forvec(J = vector(k,i,[1,i]), s += f(J)); s; For the simple sum above, you'd precompute the values x^x for x <= k. With more programming effort you can save many of the internal additions : it's wasteful to recompute the whole of f(J) when only one component of J changes. Cheers, K.B. -- Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/ F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] `