Re: a simple product, but with "i = 1...n AND i != x"

*To*: mathgroup at smc.vnet.net*Subject*: [mg70261] Re: a simple product, but with "i = 1...n AND i != x"*From*: dimmechan at yahoo.com*Date*: Tue, 10 Oct 2006 06:12:16 -0400 (EDT)

One alternative is to define f as follows: f[x_, n_] := ReleaseHold[Product[(HoldForm[x - #1] & )[i], {i, 1, n}] /. HoldForm[(a_) - (a_)]*(b___) -> b] Then for example f[1, 10] -362880 f[2,8] 720 Executing Trace[f[1, 3]] will a help you to understand what is going on. Below I will try to explain a little the code. First notice that aa=Product[(HoldForm[1 - #1] & )[i], {i, 1, 10}] (1-1) (1-2) (1-3) (1-4) (1-5) (1-6) (1-7) (1-8) (1-9) (1-10) instead of zero which you would get if you didn't use HoldForm. Information["#", LongForm -> False] "# represents the first argument supplied to a pure function. #n represents the nth argument."* Button[More..., ButtonData :> "Slot", Active -> True, ButtonStyle -> "RefGuideLink"] Information["HoldForm", LongForm -> False] "HoldForm[expr] prints as the expression expr, with expr maintained in an unevaluated form."* Button[More..., ButtonData :> "HoldForm", Active -> True, ButtonStyle -> "RefGuideLink"] Then let examine the FullForm of aa FullForm[aa] Times[HoldForm[Plus[1,Times[-1,1]]],HoldForm[Plus[1,Times[-1, 2]]],HoldForm[Plus[1,Times[-1,3]]],HoldForm[Plus[1,Times[-1, 4]]],HoldForm[Plus[1,Times[-1,5]]],HoldForm[Plus[1,Times[-1, 6]]],HoldForm[Plus[1,Times[-1,7]]],HoldForm[Plus[1,Times[-1, 8]]],HoldForm[Plus[1,Times[-1,9]]],HoldForm[Plus[1,Times[-1,10]]]] So with a proper pattern matching we can discard (1-1) bb=aa /. HoldForm[(a_) - (a_)]*(b___) -> b (1-2) (1-3) (1-4) (1-5) (1-6) (1-7) (1-8) (1-9) (1-10) Information["___", LongForm -> False] "___ (three _ characters) or BlankNullSequence[ ] is a pattern object that can stand for any sequence of zero or more \ Mathematica expressions. ___h or BlankNullSequence[h] can stand for any sequence of expressions, all of which have head h."* Button[More..., ButtonData :> "BlankNullSequence", Active -> True, ButtonStyle -> "RefGuideLink"] Executing then ReleaseHold[bb] -362880 Information["ReleaseHold", LongForm -> False] "ReleaseHold[expr] removes Hold, HoldForm, HoldPattern and HoldComplete in expr."* Button[More..., ButtonData :> "ReleaseHold", Active -> True, ButtonStyle -> "RefGuideLink"] Regards Dimitris