MathGroup Archive 2008

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

Search the Archive

Re: PlotRange Trouble

  • To: mathgroup at smc.vnet.net
  • Subject: [mg90423] Re: PlotRange Trouble
  • From: "Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com>
  • Date: Wed, 9 Jul 2008 04:52:13 -0400 (EDT)
  • References: <g4vk60$9o3$1@smc.vnet.net> <487365C3.6050407@gmail.com>

On Tue, Jul 8, 2008 at 4:44 PM, Aaron Fude <aaronfude at gmail.com> wrote:
>
> On Tue, Jul 8, 2008 at 9:04 AM, Jean-Marc Gulliet
> <jeanmarc.gulliet at gmail.com> wrote:
>>
>> Aaron Fude wrote:
>>
>>> I may be wondering why I need this, but I do:
>>>
>>> ParametricPlot[{10^-600 z, z}, {z, 0, 100},
>>>  PlotRange -> {{0, 10^-100}, {0, 100}}, AspectRatio -> 1]
>>>
>>> works perfectly, but
>>>
>>> ParametricPlot[{10^-600 z, z}, {z, 0, 100},
>>>  PlotRange -> {{0, 10^-600}, {0, 100}}, AspectRatio -> 1]
>>>
>>> fails. What gives?
>>
>> The following expressions work "perfectly", since they do not produce any
>> error messages.
>>
>> ParametricPlot[{10^-600 z, z}, {z, 0, 100},
>>  PlotRange -> {{0, 10.^-600}, {0, 100}}, AspectRatio -> 1]
>>
>> ParametricPlot[{10^-600 z, z}, {z, 0, 100},
>>  PlotRange -> {All, {0, 100}}, AspectRatio -> 1]
>
>
> Thanks!  Well, But that's a case where I would like to find out what's wrong
> with my way rather than how to fix it. What's wrong with 10^-600. The fact
> that it is smaller than the smallest double?

Correct.

You have to keep in mind two things.

First, plotting functions use only machine-precision numbers
internally. In other words, though one can writes numeric arguments as
infinite-precision (exact) numbers, these values are going to be
converted into machine-size numbers. If some arguments are out of the
range of machine-precision numbers, Mathematica complains.

Second, writting 10^-600 (infinite precision) as 10.^-600 does not
make it machine-size but *arbitrary-precision* number. Why it is so?
Because Mathematica automatically converts non-infinite-precision
numbers smaller than $MinMachineNumber into arbitrary-precision
numbers.

In[1]:= $MinMachineNumber

Out[1]= 2.22507*10^-308

In[2]:= 10.^-600

Out[2]= 9.99999999999999*10^-601

In[3]:= % // Precision

Out[3]= 15.6536

In[4]:= $MinMachineNumber // Precision

Out[4]= MachinePrecision

In[5]:= $MachinePrecision

Out[5]= 15.9546

Notice that, though 10.^-600 as a precision very close to that of a
machine-size number, it is an arbitrary-precison number and not a
hardware-precision number.

So, when you write PlotRange -> {{0, 10^-600}, {0, 100}}, you are
asking the plotting function to draw a graph using an x-axis which is
indistinguishable from the closed interval [0, 0] :-)

HTH,
-- 
Jean-Marc


  • Prev by Date: Re: ReplaceAll
  • Next by Date: Re: Display[ ] renewed?
  • Previous by thread: Re: PlotRange Trouble
  • Next by thread: Re: PlotRange Trouble