MathGroup Archive 2007

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

Search the Archive

Re: Deriving parametric plot of a branch cut

  • To: mathgroup at smc.vnet.net
  • Subject: [mg78845] Re: [mg78804] Deriving parametric plot of a branch cut
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Wed, 11 Jul 2007 06:06:38 -0400 (EDT)
  • References: <200707101026.GAA26848@smc.vnet.net>

chuck009 wrote:
> I've been working on an interesting problem of late:  f[z_]:=Log[1+Exp[-z]/Sqrt[z]] posted in here earlier.  I'm unable to plot the Riemann surface of this function even with the nice code written by Michael Trott (his code fails to handle the branch cuts).
> 
> This is a contour plot of Im[f] showing three branch cuts and a circle of radius 3:
> 
> 
> Show[{ContourPlot[Evaluate[Im[wExample] /. z -> x + I*y], 
>     {x, -5, 5}, {y, -5, 5}, PlotPoints -> 200, Contours -> 30, 
>     ColorFunction -> (Hue[0.7*Im] & ), ContourStyle -> 
>      {{Thickness[0.00001]}}, PlotLabel -> Im], 
>    Graphics[{Blue, Thickness[0.01], Circle[{0, 0}, 3]}]}]
> 
> Note the two dark lines which are two cuts as well as the negative real axis which is also a cut.  The cuts occur when:
> 
> 1 + Exp[-z]/(r^(1/2)*Exp[(I/2)*Arg[z]]) < 0
> 
> That is, whenever the expression in the log function is pure real and negative.  For example, on the circle of radius 3, I can find the point by using FindRoot:
> 
> In[88]:=
> Plot[Im[1 + Exp[-3*Exp[I*t]]/(3^(1/2)*Exp[(I/2)*Arg[3*Exp[I*t]]])], 
>   {t, 0, 2*Pi}, AspectRatio -> 1, PlotRange -> 
>    {{0, 2*Pi}, {-20, 20}}]
> 
> FindRoot[
>   Im[1 + Exp[-3*Exp[I*t]]/(3^(1/2)*Exp[(I/2)*Arg[3*Exp[I*t]]])] == 
>    0, {t, 24/10}, AccuracyGoal -> 10, WorkingPrecision -> 20]
> 
> Out[88]=
> â??Graphicsâ??
> 
> Out[89]=
> {t\[Rule]2.4481765384891584965}
> 
> Check:
> 
> In[90]:=
> N[1 + Exp[-3*Exp[I*t]]/(3^(1/2)*Exp[(I/2)*Arg[3*Exp[I*t]]]) /. 
>    t -> 2.448176538489158]
> 
> Out[90]=
> -4.800214850397471 + 7.017140493687672*^-15*I
> 
> 
> I'd like to be able to plot the cuts parametrically but I can't figure out how to do that.  Can anybody suggest a way to do so?
> 
> Thanks,
> Chuck

[Posting to group because OP email seems not to work. -DL]

You can get a symbolic form of the "bad" set using Solve. Problem is, it 
will give roots that are parasites for some values of parameters. 
Anyway, here is how you might go about it.

e1 = 1+Exp[-z]/Sqrt[z] /. z->x+I*y;

We want to solve for one in terms of the other (x in terms of y will 
work out), such that the imaginary part vanishes.

First reformulate to get the imaginary part.

e2 = ComplexExpand[Im[e1], TargetFunctions->{Re,Im}]
Out[4]//InputForm=
-((Cos[ArcTan[x, y]/2]*Sin[y])/(E^x*(x^2 + y^2)^(1/4))) -
  (Cos[y]*Sin[ArcTan[x, y]/2])/(E^x*(x^2 + y^2)^(1/4))

Recast using functions more accessible to Solve.

e3 = TrigToExp[e2]
Out[5]//InputForm=
((-I/2)*E^(-x - I*y))/(Sqrt[(x + I*y)/Sqrt[x^2 + y^2]]*(x^2 + y^2)^(1/4)) +
  ((I/2)*E^(-x + I*y)*Sqrt[(x + I*y)/Sqrt[x^2 + y^2]])/(x^2 + y^2)^(1/4)

Clear denominators.

e4 = Numerator[Together[e3]]
Out[6]//InputForm= -x + I*y + E^((2*I)*y)*Sqrt[x^2 + y^2]

Solve for x in terms of y.

xsolns = Solve[e4==0, x]
Out[12]//InputForm=
{{x -> I*y}, {x -> ((-I)*(1 + E^((4*I)*y))*y)/(-1 + E^((4*I)*y))}}

To check that we really have roots where e1 becomes real:

check = e1 /. xsolns;

Table[check, {y,-7.,7.,.3}]
Out[15]//InputForm=
{{0.8386337117331979 + 0.21304809888747359*I, 1. + 0.9886276078155021*I},
  {0.9868293419054583 + 0.27286150229924055*I,
   1.0000000000000213 + 145.711728959487*I},
  {1.146516771347575 + 0.23802906485108571*I, 1.0000877380371094 +
    9.097643273935933*^10*I}, {1.2615300048906737 + 0.11648720812449041*I,
   1.0000000301966097 + 0.*I}, {1.2888152012663516 - 0.05284577626642367*I,
   1.006858790140492 + 4.336808689942018*^-19*I},
  {1.2141421903666307 - 0.21225506640377878*I, 1.4161454167987915 + 0.*I},
  {1.0585090254061613 - 0.3045168962469362*I, 14.531534932749347 -
    8.881784197001252*^-16*I}, {0.872617324902909 - 0.2929410698615671*I,
   69129.10556900053 - 6.184563972055912*^-11*I},
  {0.7207769297878666 - 0.17530011190875774*I,
   1. - 4.0288075115405824*^-10*I},
  {0.6592671999220945 + 0.013424928994666572*I, 1. - 
0.007768617050193478*I},
  {0.7162854298920012 + 0.21096455320369203*I, 1. - 0.27616498303116566*I},
  {0.8803869039573381 + 0.34760299537003997*I,
   1.0000000000000004 - 2.997994601180535*I},
  {1.1017632001639617 + 0.3697337888559837*I, 1.000000000000007 -
    151.10150966334473*I}, {1.3065947434802208 + 0.25940313384950225*I,
   1. + 8.406684207250284*^-32*I},
  {1.4203716180305865 + 0.04311764517891992*I,
   0.9847757588332386 + 1.734723475976807*^-18*I},
  {1.392940340368531 - 0.21353662194355094*I, 0.7043707784588398 +
    2.7755575615628914*^-17*I}, {1.2171831043330819 - 0.4243868830029657*I,
   -0.3384164589085321 + 0.*I}, {0.935030039361789 - 0.5088583289595556*I,
   -5.616949705818984 + 4.440892098500626*^-16*I},
  {0.6284637477417446 - 0.4176850646813814*I, -1.460498257794715*^11 -
    0.0014095306396484375*I}, {0.39816711754198597 - 0.14970827033822406*I,
   1. + 0.07255530282250902*I}, {0.33727786831358797 + 
0.24657529513926962*I,
   1. + 0.6033854460765959*I}, {0.5126559407490671 + 0.6904936510921276*I,
   0.9999999999999999 + 1.338758374711848*I},
  {0.9836752305051711 + 1.11791480082381*I, 1. + 1.974943411183354*I},
  {2.235497529025599 + 1.863745115559424*I, 1. + 2.308392255064971*I},
  {1.5943945544632792 - 1.4651604395507023*I, 1.0000000000000002 -
    2.2394110309049005*I}, {0.7870415848407039 - 0.9770612638994755*I,
   1.0000000000000002 - 1.7883940262798785*I},
  {0.4248983395771505 - 0.5424556020347485*I, 0.9999999999999999 -
    1.0919760546994495*I}, {0.33400756319310887 - 0.10487863777468574*I,
   1. - 0.38495456390967053*I}, {0.4602800597478621 + 0.2566032798642403*I,
   1. - 0.00953437994612078*I}, {0.7272453567383439 + 0.4687457217277085*I,
   -239.84976122193302 + 1.4210854715202004*^-14*I},
  {1.0364721698295738 + 0.49866800662156235*I, -2.4607392993844357 +
    2.220446049250313*^-16*I}, {1.2906346290409985 + 0.3645858153439699*I,
   0.14788219877319442 + 0.*I}, {1.4192285117980283 + 0.12866680692122046*I,
   0.8531809205770696 + 0.*I}, {1.3964093794525958 - 0.12358558567023996*I,
   0.9984083210398568 + 1.0842021724855044*^-19*I},
  {1.2450271309752097 - 0.31018011716752164*I,
   1.0001230239868164 + 1.3289194161704303*^11*I},
  {1.0259017984829648 - 0.3770759070697712*I, 1.0000000000000009 +
    24.043787927961*I}, {0.8161806322940133 - 0.31271294732484656*I,
   1. + 1.3534120612708218*I}, {0.6839548231633583 - 0.14854852981598643*I,
   1. + 0.10924235452145192*I}, {0.6672391233662298 + 0.05391254601934885*I,
   1. + 0.0008166196834302772*I}, {0.7637239667750682 + 
0.2248479816384731*I,
   1. + 3.1535779456918236*^-84*I}, {0.9340247208143944 + 
0.309268916214322*I,
   738.0477335936395 + 0.*I}, {1.1167239076523838 + 0.2841041218002076*I,
   4.815868272834358 + 4.440892098500626*^-16*I},
  {1.2497816620786608 + 0.1639964498851607*I, 1.130954376336017 +
    1.3877787807814457*^-17*I}, {1.2910585583908656 - 
0.0055387994453164795*I,
   1.0007470575176507 + 5.963111948670274*^-19*I},
  {1.2312862984680708 - 0.16477806113454865*I, 1. + 
2.754079820473747*^-32*I},
  {1.095563420246693 - 0.26036649099650067*I, 0.9999999994615791 -
    317674.8255000023*I}, {0.9333780037788718 - 0.2628515196536209*I,
   1.0000000000000036 - 20.401705683630666*I}}

For these values of y the first solution is always a parasite, the 
second one sometimes is valid, and a subset of those actually make e1 
negative. Conclusion is you might be able to parametrize by y, for 
branch cut selecting {x,y} where x is solution as above and moreover 
makes e1 negative.


Daniel Lichtblau
Wolfram Research




  • Prev by Date: Re: How to factor a rational
  • Next by Date: Re: How to factor a rational
  • Previous by thread: Deriving parametric plot of a branch cut
  • Next by thread: Re: Deriving parametric plot of a branch cut