From: Joseph Gwinn on
I have been using Mathematica 7 to do the grunt work in solving some
transmission-line problems, using the exponential form of the equations.

A typical form would be S1 = Exp[k1*x + I*omega*(t+tau)], describing signal one,
where K1 is the attenuation in nepers per meter, I is the square root of minus
one, omega is the angular frequency in radians per second, t is time and tau is
a fixed time delay, t and tau being in seconds.

Often I need the complex conjugate of S1, so I write Conjugate[S1]. The problem
is that Mathematica does nothing useful, leaving the explicit Conjugate[] in the
output expression, which after a very few steps generates a mathematically
correct but incomprehensible algebraic hairball.

Clearly Mathematica feels that it lack sufficient information to proceed. In
particular, it has no way to know that all variables are real until explicitly
told.

One way to solve this problem is
FullSimplify[Conjugate[S1],Element[_Symbol,Reals]], and this often works.

But equally often, it works too well, yielding the trignometric expansion of the
desired exponential-form answer. Nor is it clear why it sometimes works and
sometimes works too well.

Using Simplify[] instead of FullSimplify[] doesn't seem to work at all.


So my questions are:

1. What controls FullSimplify[]'s behaviour here?

2. What other ways are there to cause Mathematica to apply the Conjugate[]
without holding back?


Thanks,

Joe Gwinn

From: David Park on
Joe,

Have you tried ComplexExpand? It assumes that all symbols are Reals, unless
specified otherwise. Also check its TargetFunctions option.


David Park
djmpark(a)comcast.net
http://home.comcast.net/~djmpark/




From: Joseph Gwinn [mailto:joegwinn(a)comcast.net]

I have been using Mathematica 7 to do the grunt work in solving some
transmission-line problems, using the exponential form of the equations.

A typical form would be S1 = Exp[k1*x + I*omega*(t+tau)], describing signal
one,
where K1 is the attenuation in nepers per meter, I is the square root of
minus
one, omega is the angular frequency in radians per second, t is time and tau
is
a fixed time delay, t and tau being in seconds.

Often I need the complex conjugate of S1, so I write Conjugate[S1]. The
problem
is that Mathematica does nothing useful, leaving the explicit Conjugate[] in
the
output expression, which after a very few steps generates a mathematically
correct but incomprehensible algebraic hairball.

Clearly Mathematica feels that it lack sufficient information to proceed.
In
particular, it has no way to know that all variables are real until
explicitly
told.

One way to solve this problem is
FullSimplify[Conjugate[S1],Element[_Symbol,Reals]], and this often works.

But equally often, it works too well, yielding the trignometric expansion of
the
desired exponential-form answer. Nor is it clear why it sometimes works and

sometimes works too well.

Using Simplify[] instead of FullSimplify[] doesn't seem to work at all.


So my questions are:

1. What controls FullSimplify[]'s behaviour here?

2. What other ways are there to cause Mathematica to apply the Conjugate[]
without holding back?


Thanks,

Joe Gwinn



From: AES on
In article <hmvqlg$1gg$1(a)smc.vnet.net>,
Joseph Gwinn <joegwinn(a)comcast.net> wrote:

> A typical form would be S1 = Exp[k1*x + I*omega*(t+tau)], describing
> signal one, where K1 is the attenuation in nepers per meter, I is the
> square root of minus one, omega is the angular frequency in radians
> per second, t is time and tau is a fixed time delay, t and tau being
> in seconds.
>
> Often I need the complex conjugate of S1, so I write Conjugate[S1].

You don't know what a firestorm you may ignite with this query.

How would you do this on paper? All the other factors in your
expression you know are going to be purely real, so you really
just want to change I to -I, right? (How else does one take a
CC in the real world?)

And so in Mathematica you might write

S1Complex = S1 /. {I -> -I}

If you try this, you'll find that sometimes it works just fine -- and
sometimes it doesn't -- and Mathematica gives you no warning
anywhere in the elementary discussions of /. or -> or I that you
shouldn't do this, or why you shouldn't.

So don't do it this way (but don't expect a lot of sympathy from
this group for people doing elementary phasor analyses like
you're doing, who are misled by this line of thinking).

From: Sjoerd C. de Vries on
Hi Joe,

I think ComplexExpand will be helpful for you. It make Mathematica
assume all variables in the contained expression are real. To improve
readibility of Conjugate you might want to input it as esc-conj-esc
(at the end of the expression, perhaps between parenthesis), so that
you only have the superscripted star.

Cheers -- Sjoerd


On Mar 7, 11:12 am, Joseph Gwinn <joegw...(a)comcast.net> wrote:
> I have been using Mathematica 7 to do the grunt work in solving some
> transmission-line problems, using the exponential form of the equations.
>
> A typical form would be S1 = Exp[k1*x + I*omega*(t+tau)], describing signal one,
> where K1 is the attenuation in nepers per meter, I is the square root of minus
> one, omega is the angular frequency in radians per second, t is time and tau is
> a fixed time delay, t and tau being in seconds.
>
> Often I need the complex conjugate of S1, so I write Conjugate[S1]. The problem
> is that Mathematica does nothing useful, leaving the explicit Conjugate[] in the
> output expression, which after a very few steps generates a mathematically
> correct but incomprehensible algebraic hairball.
>
> Clearly Mathematica feels that it lack sufficient information to proceed. In
> particular, it has no way to know that all variables are real until explicitly
> told.
>
> One way to solve this problem is
> FullSimplify[Conjugate[S1],Element[_Symbol,Reals]], and this often works.
>
> But equally often, it works too well, yielding the trignometric expansion of the
> desired exponential-form answer. Nor is it clear why it sometimes works and
> sometimes works too well.
>
> Using Simplify[] instead of FullSimplify[] doesn't seem to work at all.
>
> So my questions are:
>
> 1. What controls FullSimplify[]'s behaviour here?
>
> 2. What other ways are there to cause Mathematica to apply the Conjugate[]
> without holding back?
>
> Thanks,
>
> Joe Gwinn


From: Joe Gwinn on
Bob,

At 8:54 AM -0500 3/7/10, Bob Hanlon wrote:
>Use ComplexExpand
>
>S1 = Exp[k1*x + I*omega*(t + tau)];
>
>S1 // Conjugate
>
>E^Conjugate[I*omega*(t + tau) + k1*x]
>
>S1 // Conjugate // ComplexExpand
>
>E^(k1*x)*Cos[omega*(t + tau)] -
> I*E^(k1*x)*Sin[omega*(t + tau)]
>
>S1 // Conjugate // ComplexExpand // FullSimplify
>
>E^(k1*x - I*omega*(t + tau))

I recall trying ComplexExpand, but it always worked too well, giving
trig, just as with FullSimplify[], so I had forgotten it.

But ComplexExpand[]//TrigToExp seems to work, and isn't too ugly.


Thanks,

Joe


>Bob Hanlon
>
>---- Joseph Gwinn <joegwinn(a)comcast.net> wrote:
>
>=============
>I have been using Mathematica 7 to do the grunt work in solving some
>transmission-line problems, using the exponential form of the equations.
>
>A typical form would be S1 = Exp[k1*x + I*omega*(t+tau)], describing
>signal one,
>where K1 is the attenuation in nepers per meter, I is the square root of minus
>one, omega is the angular frequency in radians per second, t is time
>and tau is
>a fixed time delay, t and tau being in seconds.
>
>Often I need the complex conjugate of S1, so I write Conjugate[S1].
>The problem
>is that Mathematica does nothing useful, leaving the explicit
>Conjugate[] in the
>output expression, which after a very few steps generates a mathematically
>correct but incomprehensible algebraic hairball.
>
>Clearly Mathematica feels that it lack sufficient information to proceed. In
>particular, it has no way to know that all variables are real until explicitly
>told.
>
>One way to solve this problem is
>FullSimplify[Conjugate[S1],Element[_Symbol,Reals]], and this often works.
>
>But equally often, it works too well, yielding the trignometric
>expansion of the
>desired exponential-form answer. Nor is it clear why it sometimes works and
>sometimes works too well.
>
>Using Simplify[] instead of FullSimplify[] doesn't seem to work at all.
>
>
>So my questions are:
>
>1. What controls FullSimplify[]'s behaviour here?
>
>2. What other ways are there to cause Mathematica to apply the Conjugate[]
>without holding back?
>
>
>Thanks,
>
>Joe Gwinn