Re: Cannot Factor an expression
- To: mathgroup at smc.vnet.net
- Subject: [mg87587] Re: Cannot Factor an expression
- From: "David Park" <djmpark at comcast.net>
- Date: Mon, 14 Apr 2008 05:40:39 -0400 (EDT)
- References: <ftscum$b7o$1@smc.vnet.net>
step1 = Sum[(Subscript[z, i] - 1)*(\[Mu] - Subscript[x, i])^2, {i, 1, 3}] step2 = Expand[step1] The problem is how to return step2 to the form of step1. The difficulty with the step2 expression is that the -mu^2 terms from each expansion have been added together into a single term and Mathematica doesn't know how to split it apart again. What we need to do is pick out the three sets of terms that contain the subscripts 1, 2 and 3, partition the -3 mu^2 term between them and factor. One method is to write a rule that matches the 5 terms without the -mu^2 term and then adds it back in to factor. Since by this rule mu^2 is being subtracted out three times we add 3 mu^2 to the original expression to compensate. factorrule = term : (Expand[(Subscript[z, i_] - 1)*(\[Mu] - Subscript[x, i_])^2] + \[Mu]^2) :> Factor[term - \[Mu]^2] step2 + 3 \[Mu]^2 //. factorrule giving... (\[Mu] - Subscript[x, 1])^2 (-1 + Subscript[z, 1]) + (\[Mu] - Subscript[x, 2])^2 (-1 + Subscript[z, 2]) + (\[Mu] - Subscript[x, 3])^2 (-1 + Subscript[z, 3]) The present developmental version of Presentations, which will be released in a few weeks and purchasers will receive updates, has a new section called Manipulations. It contains a set of routines that are extremely convenient for manipulating algebraic expressions. Two of these routines are MapLevelParts and MapLevelPatterns. These provide a method for applying a function to a level subset of items. This is most commonly a subset of terms in a sum. It might also be a subset of factors in a product or a subset of items in a list. The function is applied to the entire subset and not to the individual items. Then we could use MapLevelPatterns to affect the same transformation. Here we pick out subsets that are not free of specific subscript expressions. Needs["Presentations`Master`"] Fold[Function[{e, i}, e // MapLevelPatterns[Factor[# - \[Mu]^2] &, {{_?(\[Not] FreeQ[#, Subscript[z, i] | Subscript[x, i]] &)}}]], step2 + 3 \[Mu]^2, {1, 2, 3}] giving... (\[Mu] - Subscript[x, 1])^2 (-1 + Subscript[z, 1]) + (\[Mu] - Subscript[x, 2])^2 (-1 + Subscript[z, 2]) + (\[Mu] - Subscript[x, 3])^2 (-1 + Subscript[z, 3]) -- David Park djmpark at comcast.net http://home.comcast.net/~djmpark/ "Francogrex" <franco at grex.org> wrote in message news:ftscum$b7o$1 at smc.vnet.net... > If Factor is effectively the reverse of expand, then how come factor > cannot find back the expression below? > > Expand[Sum[(Subscript[z, i] - 1)*(\[Mu] - Subscript[x, i])^2, {i, 1, > 3}]] > > Factor[-3*\[Mu]^2 + 2*\[Mu]*Subscript[x, 1] - Subscript[x, 1]^2 + > 2*\[Mu]*Subscript[x, 2] - Subscript[x, 2]^2 + 2*\[Mu]*Subscript[x, > 3] - > Subscript[x, 3]^2 + \[Mu]^2*Subscript[z, 1] - > 2*\[Mu]*Subscript[x, 1]*Subscript[z, 1] + Subscript[x, 1]^2* > Subscript[z, 1] + \[Mu]^2*Subscript[z, 2] - > 2*\[Mu]*Subscript[x, 2]*Subscript[z, 2] + Subscript[x, 2]^2* > Subscript[z, 2] + \[Mu]^2*Subscript[z, 3] - > 2*\[Mu]*Subscript[x, 3]*Subscript[z, 3] + Subscript[x, 3]^2* > Subscript[z, 3]] > > Is there some additional arguments to the function factor so that it > can find back the original: > Sum[(Subscript[z, i] - 1)*(\[Mu] - Subscript[x, i])^2, {i, 1, 3}] > > Thanks for help with this >