MathGroup Archive 2003

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

Search the Archive

Re: Extracting Re and Im parts of a symbolic expression

  • To: mathgroup at smc.vnet.net
  • Subject: [mg42123] Re: Extracting Re and Im parts of a symbolic expression
  • From: carlos at colorado.edu (Carlos Felippa)
  • Date: Thu, 19 Jun 2003 04:00:31 -0400 (EDT)
  • References: <bcmodv$sm8$1@smc.vnet.net> <bcp0g1$7qr$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

AES/newspost <siegman at stanford.edu> wrote in message news:<bcp0g1$7qr$1 at smc.vnet.net>...
> In article <bcmodv$sm8$1 at smc.vnet.net>,
>  Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
> 
> > Note that CompelxExpand[Re[z]] works, Re[ComplexExpand[z]] is pointless 
> > since it is just Re[z].
> 
> And the reason why this question keeps coming up year after year on this 
> newsgroup (and why I have to look up the answer in my own online "Mathematica 
> Notes" notebook almost every time I use this construct) is that the 
> intuitive way any normal user would write an expression to get the real 
> part of an expression is
> 
>             Re[ComplexExpand[expr]]
> 
> whereas the "correct" Mathematica statement
> 
>             ComplexExpand[Re[expr]]
> 
> is under any normal interpretation an absurd way of expressing what the 
> user wants.
> 
> [In real life compound expressions almost expand **from the inside 
> out**:  If you want the log of the sin of z you write  Log[Sin[z]].  So, 
> the second expression above says you're going to take the REAL part of 
> expr, and then COMPLEX-EXPAND the result, even though the result is 
> something that's already explicitly real, right?
> 
> Don't both explaining again **why** it works this way -- my only point 
> is that maybe in a larger picture of the logical design of Mathematica 
> syntax it has to be structured this way, but unfortunately it's an 
> intrinsically confusing way of expressing the user's objective, and 
> always will be.]

The underlying problem is the lack of variable typing, as 
well as assumptions (aka constraints), stored in a global 
database. E.g. Declare[x,Real,{x>0,x=<5}] 

Some of this essential need has filtered over time into 
two functions: Integrate and Simplify, as optional declarations 
although they use different notation.  On exit from either 
whatever was declared is lost, leading to inconsistencies.

ComplexExpand displays a third, "implicit assumption" form:  
ComplexExpand[x+I*y] assumes x and y are real. As in the explicit
forms noted above, the information is lost.  So 
Re[ComplexExpand[x+I*y]] or Abs[ComplexExpand[x+I*y]] cannot 
possibly work because the assumptions  go out of scope.


  • Prev by Date: MathML Question in 4.2
  • Next by Date: RE: Condition vs PatternTest
  • Previous by thread: Re: Re: Extracting Re and Im parts of a symbolic expression
  • Next by thread: Re: Extracting Re and Im parts of a symbolic expression