Re: Complex Oddity

*To*: mathgroup at smc.vnet.net*Subject*: [mg57468] Re: [mg57455] Complex Oddity*From*: "David Park" <djmp at earthlink.net>*Date*: Sun, 29 May 2005 01:03:27 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

John, Just look at the full form and you will see what happened. z = x + I y; z // FullForm Plus[x, Times[Complex[0, 1], y]] It is not Complex[x,y]! Use the Re, Im and ComplexExpand function. {Re[z], Im[z]} // ComplexExpand {x, y} When doing complex algebra, you will find ComplexExpand almost indespensible. Check out its Help page carefully. The TargetFunction option is often especially useful. David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: John Reed [mailto:nospamjreed at alum.mit.edu] To: mathgroup at smc.vnet.net I was trying to separate the real and imaginary parts of a complicated expression, and ended up with something strange. Here is a short version of what happened. Let z = x + I y, then realPart = z /. {Complex[a_,b_]->a} gives realPart = x. Great! Now, try imagPart = z /. {Complex[a_,b_]->b} returns with imagPart = x + y. Oops In my original expression, it was harder to see, but the same error was occuring. What I tried first was using Re[z] and Im[z], but then I have to work with Im[y] and Im[x]. It seems to me two things need to be done here. First, be able to assign variables so that they always stay real or else indicate an error is occuring if they turn out to be complex, and second do something to avoid errors like the above. I have to say that I don't trust Mathematica's answers as much as I did before this came up. Now I feel like I better have a good idea of what the answer is before I trust Mathematica. John Reed