Re: multinomials: a programming question
- To: mathgroup at smc.vnet.net
- Subject: [mg4007] Re: [mg3923] multinomials: a programming question
- From: Robert Pratt <rpratt at math.unc.edu>
- Date: Tue, 14 May 1996 02:39:29 -0400
- Sender: owner-wri-mathgroup at wolfram.com
I just met up with a similar problem using cyclotomic polynomials to factor x^n-1. The dth cyclotomic polynomial has as its root the primitive dth roots of unity. x^n-1 = product over divisors d of n of the dth cyclotomic polynomial. I would like to iterate over the set Divisors[n], but this is too complicated for Mma to understand directly. So instead, I iterate from 1 to Length[Divisors[n]] and then apply Divisors[n][[i]] before taking the cyclotomic polynomial. This composition of functions works nicely when the domain is restrictive (MMA forces the iterating set to be arithmetic sequences, but Divisors[n] does not form an arithmetic sequence). factorxnminus1[n_]:= Product[Cyclotomic[Divisors[n][[i]], x], {i, 1 Length[Divisors[n]]}] The same approach should work for you. Define the iterating set you want, and then use iteratingset[[i]] and {i, 1, Length[iteratingset]} in your Sum command. Rob Pratt Department of Mathematics The University of North Carolina at Chapel Hill CB# 3250, 331 Phillips Hall Chapel Hill, NC 27599-3250 rpratt at math.unc.edu On Fri, 10 May 1996, Jack Goldberg wrote: > The more general issue here is this: Many sums in mathematics (most > more important than the above trivial problem) are indexed over more > complicated sets than allowed by the syntax of Sum. For example, > open any book on number theory - I opened my copy of An Introduction > To The Theory of Numbers, I. Niven et. al. - and found the Mobius > inversion formula, pg 194, part > of which reads (subject to the limitation of my keyboard) > > The sum over all divisors d of n of the product of > mu(d)*F(n/d) ... > > Instead of having to recast this remarkable formula into terms > understandable by Sum, wouldn't it be nice to have the set over > which the sum is taken be given as the iterator. Then my trinomial > problem would be solved like this: > > tri[a_,b_,c_,n_] := Sum["as above", {i+j+k=n}] > > Your thoughts are more than welcome! > > Jack Goldberg > University of Michigan > > > ==== [MESSAGE SEPARATOR] ====