Re: Complex Oddity

*To*: mathgroup at smc.vnet.net*Subject*: [mg57649] Re: Complex Oddity*From*: "Carl K. Woll" <carlw at u.washington.edu>*Date*: Fri, 3 Jun 2005 05:33:29 -0400 (EDT)*Organization*: University of Washington*References*: <d79enu$lbl$1@smc.vnet.net><d7hahj$3q6$1@smc.vnet.net> <d7mk2i$c36$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

<jfeth at azlink.com> wrote in message news:d7mk2i$c36$1 at smc.vnet.net... >I use Jones matrices to evaluate optical circuits and always need to > find the intensity of two interfering electric fields. The intensity > (or brightness) of a field is found as a positive real value from a > complex field as the field times the complex conjugate of the field. > As you can see below, Mathematica gives yet another complex value when > one does this straightforward multiplication instead of the real value > that, I might add, is drilled into all students at the first glimpse of > root(-1). For several weeks I struggled to use Mathematica in my > circuit evaluation until one inspired Saturday, after several pots of > coffee, dumb luck and iteration brought forth Intensity[expr_]:= below. > I don't know why it works, I don't know how it works, and I > don't know another way to do the job, but, even as ugly as it is, at > least it works and it works very quickly. Importantly, it also gives > me answers as cosines with arguments that are (real)sums and > differences of characteristic delays, misalignments, and phase > modulation terms. > > f=E^(I*d) > > In[1]:= > f*Conjugate[f] > > Out[1]= > E^ (I*d - I*Conjugate[d]) > > In[2]:= > Intensity[expr_]:= > TrigReduce[ExpToTrig[expr*TrigToExp[ComplexExpand[Conjugate[ExpToTrig[expr]]]]]] > > In[3]:= > Intensity[f] > > Out[3]= > 1 > Isn't ComplexExpand[f Conjugate[f]] much simpler? ComplexExpand[f Conjugate[f]] 1 Another idea is to use Simplify with assumptions: Simplify[f Conjugate[f], Element[d, Reals]] 1 Is there some expr where the above approaches worked poorly for you? Carl Woll > With this solution in hand, as an optical engineer, I now have the > luxury of wondering 1) exactly what mathematical elegance (or utility) > is gained by Mathematica's assumption that every variable is always > complex, and 2) why there is apparently no way in Mathematica to > globally define a variable as a real number (i.e., its own conjugate). > > Regards, > > John Feth > > > John Reed wrote: >> Thanks to all who explained what is happening and how to work this >> problem >> correctly. Now I know one facet of working with complex numbers. I >> don't >> feel much better about this however. I received one e-mail that said >> this >> was my fault for not reading the documentation closely enough. This >> problem >> came up in the book "Mathematica for Physics" second edition by Zimmerman >> and Olness. They solve a problem using the Complex[a_,b_]->a rule, ( see >> page 91) but not the b part. The b part was my idea. Now I know why >> they >> didn't solve for the imaginary part this way. They get the imaginary >> part >> by subtracting the real part from the complex expression and dividing by >> I. >> How many other gotchas are hidden in the code, waiting to bite the unwary >> and relatively new user? What documentation tells about this kind of a >> problem or do I just have to find them for myself by hopefully catching >> the >> errors as they occur? >> >> John Reed >> >