       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:= \$MinMachineNumber

Out= 2.22507*10^-308

In:= 10.^-600

Out= 9.99999999999999*10^-601

In:= % // Precision

Out= 15.6536

In:= \$MinMachineNumber // Precision

Out= MachinePrecision

In:= \$MachinePrecision

Out= 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