Re: Keeping terms of certain order in expand command
- To: mathgroup at smc.vnet.net
- Subject: [mg31609] Re: Keeping terms of certain order in expand command
- From: Tom Burton <tburton at cts.com>
- Date: Fri, 16 Nov 2001 06:38:16 -0500 (EST)
- Organization: Brahea Consulting
- References: <9t0435$3o6$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hello,
Here is a straightforward implementation of your words. First, form the expression to be expanded:
expr1 = Plus @@ Table[Subscript[T, i], {i, 3, 8}]
Then expand:
expr2 = Expand[expr1^5]
Now it's just a matter of slightly rewriting your words. Splitting off the coefficient c, each term is converted from a product to a sum (inner Plus@@), then the order expression is formed, divided by 2, and then checked whether it is an integer or not; i.e., whether the order expression itself is even or not. Even terms are retained. Finally, the result of Cases, a list, is converted to a sum (outer Plus@@).
expr3 = Plus @@ Cases[expr2,
c_Integer*term_ /; IntegerQ[
(Plus @@ term /.
{Subscript[T, i_] :> i,
Subscript[T, i_]^j_ :> i*j})/2]]
There may be a clever, much briefer solution, but this is straightforward.
Tom Burton
On Thu, 15 Nov 2001 10:06:29 +0000 (UTC), in comp.soft-sys.math.mathematica you wrote:
>Hello All,
>
>I am tring to write a program that will do the following but I cant seem to
>get it right.
>
>I would like to keep terms of the expansion below that have
>even order where order is defined as follows:
>
>
>The order of T_x is x*1 x where 1 is the exponent of the term,
> _ (underscore) is for sub, and ^ is for raised to the power.
>
>
>the order of T_x * T_y = x*1 + y*1
>the order of ((T_x)^i) * ((T_y)^j)) * ((T_z)^k) is
> x*i + y*j + z*k
>
>Expand[(T_3 + T_4 + T_5+ T_6+ T_7+T_8)^5]
>
>Thanks A lot,
>Chris