Re: Expression transformation
- To: mathgroup at smc.vnet.net
- Subject: [mg59311] Re: [mg59268] Expression transformation
- From: "David Park" <djmp at earthlink.net>
- Date: Fri, 5 Aug 2005 01:21:59 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
The following is a useful routine that is missing in Mathematica. MapLevelParts::usage = "MapLevelParts[function, {topposition, levelpositions}][expr] will map \ the function onto the selected level positions in an expression. \ Levelpositions is a list of the selected parts. The function is applied to \ them as a group and they are replaced with a single new expression. Other \ parts not specified in levelpositions are left unchanged.\nExample:\na + b + \ c + d + e // MapLevelParts[f, {{2,4,5}}] -> a + c + f[b + d + e]"; MapLevelParts[func_, part : {toppart___Integer?Positive, subp : {_Integer?Positive, eprest__Integer?Positive}}][expr_] := Module[{work, subparts, npos, null, i, nnull = Length[{eprest}], tempfunc}, work = tempfunc@Part[expr, Sequence @@ part]; subparts = Thread[{toppart, subp}]; newparts = {work, Table[null[i], {i, 1, nnull}]} // Flatten; npos = Partition[Range[nnull + 1], 1]; work = ReplacePart[expr, newparts, subparts, npos] /. null[_] -> Sequence[]; work /. tempfunc -> func ] Then for your expression... expr = Exp[-x] + (a + b Exp[-x])/c; expr // Expand % // MapLevelParts[Together, {{2, 3}}] 1/c Distribute[c %] a/c + E^(-x) + b/(E^x*c) a/c + (b + c)/(E^x*c) (a + (b + c)/E^x)/c where the E^x in the denominator actually displays as E^(-x) in the numerator. David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: mumbojumbo [mailto:mjumbo at gmail.com] To: mathgroup at smc.vnet.net Dear forum, How can I persuade Mathematica to transform the expression Exp(-x)+(a+b Exp[-x])/c to the form (a+(b+c)Exp(-x))/c I have tried Together[...] and Simplify, but I always get (b + c + a*E^x)/(c*E^x) It looks like Mathematica is silently transforming Exp[-x] to 1/Exp[x]. How can I disable this transformation? I am asking because in applications some equivalent forms are more equivalent than others e.g. Exp[-u/(kT)]-1 is considered a proper form, while (1- Exp[u/(kT)])/Exp[u/(kT)] is not. Thanks, Yuri. mailto:mjumbo at gmail.com