Altering terms of an Expression
- To: mathgroup@smc.vnet.net
- Subject: [mg11836] Altering terms of an Expression
- From: "S. Rempe" <rempe@u.washington.edu>
- Date: Wed, 1 Apr 1998 00:35:42 -0500
- Organization: University of Washington
Hi,
There are 3 things I want to do with an expression.
The expression may have 1 or more terms added together, each
term is composed of a product of elements.
1). I want to multiply each term in the expression by a product of
functions. For example, the expression labelled by integers k,l
might look like
gm[[k,l]]= a*b*c
I want it to become
gm[[k,l]]= a*b*c*f[k]*f[l]
I have written a Do loop that doesn't work because I wish that
Length would output the number of terms added in the expression
(1 term in above expression), but Length gives 3 for the expression
above.
Do[{
answer=gm[[k,l]][[i]]*f[k]*f[l];
},{k,1,n},{l,k+1,n},{i,1,Length[gm[[k,l]]]} ];
This works fine when the expression contains 2 or more terms.
How do I make it work (automatically) even in the case of 1
term in the expression?
2). I want to order each term in the expression by the index.
For example, say the expression is in alphabetical order,
astring[3]*bstring[1]
I want it ordered numerically
bstring[1]*astring[3]
3). Then in each term of the expression, I want to combine
the strings that refer to the same index and multiply in
a new string if the index is missing.
For example, the expression in numerical order from the
last step might be,
bstring[1]*cstring[1]*astring[3]
I want it to become
bstringcstring[1]*newstring[2]*astring[3]
To summarize:
In Step 1 Length[expression] gives the number of terms
summed together in expression except when there is only 1 term.
I need to know how to get around that.
The result of Step 3, merging strings with the same index, is the
other thing I want. Numerical ordering of the indices is not
required in the result, I just thought it might make Step 3
easier to accomplish.
Thanks.
Susan Rempe
rempe@u.washington.edu