RE: High precision numbers and Plot[] ?
- To: mathgroup at smc.vnet.net
- Subject: [mg13671] RE: [mg13661] High precision numbers and Plot[] ?
- From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
- Date: Sat, 15 Aug 1998 04:39:05 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Axel Kowald wrote:
_________________________
I try to plot a function where I have to use high precision numbers.
That means to get the correct answer I have to use N[f,50]. I set the
Compiled option of plot to false and tried:
Plot[N[f,50], {i, start, end}, Compiled -> False]
However, this doesn't work. The result is the same as:
Plot[f,{i,start,end}]
Any idea what I'm doing wrong ?
_________________________
Plot insists on using machine precision numbers even when you use
Compile->False. The lines below will use SetPrecision to give the
desired result.
In[1]:=
f[x_]:=Log[1-Erf[x]]+x^2;
g[x_]:=f[SetPrecision[x,17]]
In[2]:=
Plot[g[x],{x,2,8}];
(* graphics not shown *)
Note:
Plot[Log[1-Erf[x]]+x^2, {x,2,8}]
doesn't work.
About a month ago I wrote a new plot command to use SetPrecision behind
the scenes. See the code below.
In[3]:=
PrecisionPlot[lst_List,{x_,xmin_,xmax_},
opts___?OptionQ]:=Module[{plots1,disp},
disp=DisplayFunction/.{opts}/.Options[PrecisionPlot];
plots1=((PrecisionPlot[#,{x,xmin,xmax},
DisplayFunction->Identity,opts]&)/@lst);
Show[plots1, DisplayFunction->disp]
]
In[4]:=
PrecisionPlot[f_,{x_,xmin_,xmax_},
opts___?OptionQ]/;Head[f]=!=List:=
Module[{g,h},
g=Evaluate[f/.x->#]&;
h=g[SetPrecision[#,17]]&;
Plot[h[x],{x,xmin,xmax}, opts]
]
(* I give PrecisionPlot the same default options as Plot. *)
In[5]:=
Options[PrecisionPlot]={
AspectRatio -> GoldenRatio^(-1),
Axes -> Automatic,
AxesLabel -> None,
AxesOrigin -> Automatic,
AxesStyle -> Automatic,
Background -> Automatic,
ColorOutput -> Automatic,
Compiled -> True,
DefaultColor -> Automatic,
Epilog -> {},
Frame -> False,
FrameLabel -> None,
FrameStyle -> Automatic,
FrameTicks -> Automatic,
GridLines -> None,
ImageSize -> Automatic,
MaxBend -> 10.`,
PlotDivision -> 30.`,
PlotLabel -> None,
PlotPoints -> 25,
PlotRange -> Automatic,
PlotRegion -> Automatic,
PlotStyle -> Automatic,
Prolog -> {},
RotateLabel -> True,
Ticks -> Automatic,
DefaultFont :> $DefaultFont,
DisplayFunction :> $DisplayFunction, FormatType :> $FormatType,
TextStyle :> $TextStyle};
(* Now both of the lines below produce a satisfactory graphics. *)
In[6]:=
PrecisionPlot[Log[1-Erf[x]]+x^2,{x,2,8}];
(* graphic not shown *)
In[7]:=
PrecisionPlot[{Log[1-Erf[x]]+x^2,Sin[x]-2},{x,2,8}];
(* graphic not shown *)
Ted Ersek