MathGroup Archive 2008

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

Search the Archive

Re: Trouble computing conjugates

  • To: mathgroup at smc.vnet.net
  • Subject: [mg88558] Re: Trouble computing conjugates
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Thu, 8 May 2008 04:14:58 -0400 (EDT)
  • Organization: University of Bergen
  • References: <fvs2k5$enp$1@smc.vnet.net>

Roy wrote:
> I'm having trouble getting mathematica to compute complex conjugates
> of some fairly simple expressions:
> 
> If I type the following:
> 
> $Assumptions = {g \[Element] Reals, f \[Element] Reals}
> u1 = f + \[ImaginaryI] g
> u2 = f - \[ImaginaryI] g
> 
> Then the command:
> 
> Refine[Conjugate [c1 u1]]
> 
> returns:
> 
> f - \[ImaginaryI] g) Conjugate[c1]
> 
> and the command:
> 
> Refine[Conjugate[c1 u1 + u2]]
> 
> returns:
> 
> f + \[ImaginaryI] g + (f - \[ImaginaryI] g) Conjugate[c1]
> 
> as I would expect.  But the command:
> 
> Refine[Conjugate[c1 u1 + c2 u2]]
> 
> returns:
> 
> Conjugate[c2 (f - \[ImaginaryI] g) + c1 (f + \[ImaginaryI] g)]
> 
> i.e. it refuses to distribute the complex conjugate throughout the
> expression.  What I would like it to tell me is:
> 
> (f + \[ImaginaryI] g) Conjugate[c2] + (f - \[ImaginaryI] g)
> Conjugate[c1]

For this particular example, you could manually distribute Conjugate 
over the sum:

Refine@Distribute[Conjugate[c1 u1 + c2 u2]]

FunctionExpand works, too:

Conjugate[c1 u1 + c2 u2] // FunctionExpand

> 
> The closest I have been able to come to getting what I want is by
> using:
> 
> ComplexExpand[Refine[Conjugate[ c1 u1 + c2 u2]], {c1, c2}]
> 
> but this separates c1 and c2 into their real and imaginary parts.  The
> above expressions are much simpler than the ones I REALLY want
> Mathematica's help in simplifying.  If I use this ComplexExpand
> command, then I'm going to have to recombine them into complex numbers
> again, which would be very very bad.
> 

I hope that FunctionExpand will work for your more complicated example. 
  If it doesn't (or it has side effects that you want to avoid), you 
could experiment with something like

Refine[ expr /.
   HoldPattern@Conjugate@Plus[terms__] :>
                 Distribute@Conjugate@Plus[terms]
]

The HoldPattern was necessary to prevent Plus[terms__] from evaluating 
to terms__


  • Prev by Date: RE: Request for Collective Wisdom...
  • Next by Date: Re: Trouble computing conjugates
  • Previous by thread: Re: Trouble computing conjugates
  • Next by thread: Definite integral problem