
Re: Conjugate of symbolic expressions
Posted:
Mar 8, 2010 6:21 AM


On Mar 7, 2:12 am, Joseph Gwinn <joegw...@comcast.net> wrote: > I have been using Mathematica 7 to do the grunt work in solving some > transmissionline 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 exponentialform 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
Joe,
I struggled with Mathematica's sometimes obscure treatment of complex numbers and one morning several years ago after massive coffee fortification, I managed to force output sensible to mere humans. The expressions below work for individual complex expresssions and also (massive) Jones matrices.
Intensity[expr_] := TrigReduce[ ExpToTrig[ expr*TrigToExp[ComplexExpand[Conjugate[ExpToTrig[expr]]]]]]; conj[expr_] := TrigToExp[ComplexExpand[Conjugate[ExpToTrig[expr]]]];
It looks pretty clumsy, but it is very fast and always gives intelligible results. It works with all versions of Mathematica from 5.2 through 7. Drop me a line and I'll send you a notebook with some optical circuits.
Regards,
John Feth

