Re: Mathematica Graphics

*To*: mathgroup at smc.vnet.net*Subject*: [mg8862] Re: [mg8846] Mathematica Graphics*From*: David Withoff <withoff>*Date*: Tue, 30 Sep 1997 20:16:25 -0400*Sender*: owner-wri-mathgroup at wolfram.com

> Could anyone tell me how to make Mathematica plot the following function > smoothly? > > Wbar[q_,w_]:=w/(4 Sin[q/2]); > > Chi[q_,w_]:= > EllipticF[Pi/2 - ArcSin[Wbar[q,w]], 1/(1-Wbar[q,w]^2)] / > Sqrt[1-Wbar[q,w]^2]; > > ChiPlot[q_,w_]:= > If[(w>2 Sin[q])&&(w < 4 Sin[q/2]), Chi[q,w]/(2 Pi Sin[q/2]),0]; > > Plot[{ChiPlot[0.025,w]},{w,0.04999,0.050},PlotPoints->200, > PlotRange->{19.998,20.003}] > > If I run the last Plot command, Mathematica always complains about > ChiPlot[w] not being a machine-size real number at some points, and then > it only plots several disconnected lines. I realize the function is > rather `dangerous' but analytically I expect it to behave normally > inside the region that I use above, except perhaps at the > boundaries. Anyway, if Mathematica can get the separate lines, why can't > it obtain > the values for points between the lines also? > > Much thanks in advance, > > David Djajaputra Try using high-precision, as in Plot[{ChiPlot[1/40, SetPrecision[w, 100]]},{w,0.04999,0.050},PlotPoints->200, PlotRange->{19.998,20.003}, Compiled -> False] In this example, numerical error in machine arithmetic leads to a non-zero imaginary parts in values for ChiPlot[0.025,w]: In[5]:= ChiPlot[0.025, .049995] -6 Out[5]= 20.0013 - 7.19537 10 I Using the high-precision arithmetic provided by Mathematica, rather than the machine arithmetic provided by the host computer, this problem goes away. Dave Withoff Wolfram Research