MathGroup Archive 2001

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

Search the Archive

Re: complex coefficients and rules...

  • To: mathgroup at
  • Subject: [mg28212] Re: [mg28203] complex coefficients and rules...
  • From: Mianlai Zhou <lailai at>
  • Date: Thu, 5 Apr 2001 03:00:27 -0400 (EDT)
  • Sender: owner-wri-mathgroup at


You have multiple choices for this. First, if you simply say

Conjugate[Exp[4 I y]]

you will get an answer Exp[-4 I Conjugate[y]], which is correct when
assuming y is potentially complex. You are right, Mathematica always
assume an algebraic symbol to be complex without extra declaration. If you
want to tell Mathematica that y is real, before it type a command like

y /: Conjugate[y] = y;

Then you will get answer Exp[-4 I y]. Of course you can define a function
SetReal, which set variables to be real, as the following:

SetReal[x___] := Module[{protectstuff},
                         protectstuff = Unprotect[Conjugate];
                         (Conjugate[#] := #) & /@ {x};
                         Protect /@ protectstuff;

Then you can say SetReal[y] to set y to be real and then use Conjugate to
take the conjugation, and get the answer that you want.

Of course, there is another alternative way:

Simplify[ Conjugate[Exp[4 I y]], y ~Element~ Reals ]

you will also get Exp[-4 I y], where ~Element~ can also be replaced by a
Greek letter, typed from keyboard by "<Escape> elem <Escape>".

Finally, your approach is also a good way though it seems somewhat
cumbersome. But you should better use :> (RuleDelayed) instead of ->

Exp[-4 I y] /. Complex[a_, b_] :> Complex[a, -b]

Otherwise it would be dangerous when a or b have already had a value.

Good luck!

On Wed, 4 Apr 2001, Richard Easther wrote:

> Hi,
> I am having some trouble applying some simple rules to complex
> expressions.
> For instance,
>  Exp[-4 I y] /. I-> -I
> yields
>  Exp[-4 I y]
> This seemed a bit odd, so I looked at the "full form" and found,
> Power[E, Times[Complex[0, -4], y]]
> However, trying the match
>  Exp[-4 I y] /. a_ I -> -a I
> doesn't work either, since FullForm[a I ]  is Times[Complex[0, -1], a]
> and so the patterns do not match.
> All I want is a simple complex conjugate (the Conjugate function does
> not assume that y is real), that maps I->-I. The more tricky
>  Exp[-4 I y] /. Complex[a_ ,b_] -> Complex[a,-b]
> does work, but it is seems a little cumbersome.
> In any case my question is: is there a general way to avoid having to do
> this, or is Mathematica always going to assume that any algebraic
> constant is potentially complex?
> Richard

  • Prev by Date: Re: Help
  • Next by Date: Re: Serious bug in MatchQ causes crashes and incorrect results
  • Previous by thread: RE: complex coefficients and rules...
  • Next by thread: Re: complex coefficients and rules...