Re: Conjugate of symbolic expressions
- To: mathgroup at smc.vnet.net
- Subject: [mg108076] Re: Conjugate of symbolic expressions
- From: John Feth <johnfeth at gmail.com>
- Date: Mon, 8 Mar 2010 06:10:18 -0500 (EST)
- References: <hmvqlg$1gg$1@smc.vnet.net>
On Mar 7, 2:12 am, Joseph Gwinn <joegw... at 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 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