MathGroup Archive 2001

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

Search the Archive

Re: complex coefficients and rules...

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

Hello,

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 ->
(Rule):

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...