MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Collecting Positive and Negative Terms

  • To: mathgroup at smc.vnet.net
  • Subject: [mg111737] Re: Collecting Positive and Negative Terms
  • From: "David Park" <djmpark at comcast.net>
  • Date: Thu, 12 Aug 2010 05:26:36 -0400 (EDT)

Here is an attempt. It is a little difficult to know if all the relevant
forms have been caught, and how complex values should be handled. Here I try
to separate by the manifest appearance of the sign.

manifestNegativePositive[complexvars : ({_Symbol ...}) : {}][
  expr : (_Plus | _Complex)] :=
 Module[{re, im, reneg, repos, imneg, impos},
  re = ComplexExpand[Re[expr], complexvars];
  im = ComplexExpand[Im[expr], complexvars];
  reneg = 
   Plus @@ Cases[
     If[Head[re] =!= Plus, {re}, 
      re], (_?Negative | HoldPattern[Times[_?Negative, __]])];
  repos = re - reneg;
  imneg = 
   Plus @@ Cases[
     If[Head[im] =!= Plus, {im}, 
      im], (_?Negative | HoldPattern[Times[_?Negative, __]])];
  impos = im - imneg;
  {reneg + I imneg, repos + I impos}
  ] 

Some tests:

5/3 + a - b + 3 c - 4 d // manifestNegativePositive[] 

5/3 + a - b + 3 c - 4 d // manifestNegativePositive[{a, b, c, d}] 

5/3 (2 - 3 I) + a - b + 3 c - 4 d // manifestNegativePositive[] 

(a - b) (c + d) - e // manifestNegativePositive[] 

1/(a - I b) + 3 f[-x] // manifestNegativePositive[] 

3.5 - 2 I // manifestNegativePositive[] 


David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/  


From: Michael Knudsen [mailto:micknudsen at gmail.com] 

Hi,

I'm currently doing calculations often involving very large
expressions with a lot of unknown parameters. To investigate whether
an expression is positive or negative, I usually expand it using the
Expand command and manually copy and paste the positive and negative
terms into new expressions and simplify them using FullSimplify. In my
case it often turns out that comparing the two is much easier than
looking at the entire expression as a whole.

However, it's very cumbersome to do all this manually. Is there an
easy way in Mathematica to pick out terms begging with + (or -) in a
sum?

Thanks,
Michael Knudsen




  • Prev by Date: Re: A new graphic user interface
  • Next by Date: Re: A new graphic user interface
  • Previous by thread: Re: Collecting Positive and Negative Terms
  • Next by thread: Re: Collecting Positive and Negative Terms