MathGroup Archive 2003

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

Search the Archive

Re: Explain this (error in Plot[Evaluate[Range[3]],{x,0,1}])

  • To: mathgroup at smc.vnet.net
  • Subject: [mg41813] Re: [mg41776] Explain this (error in Plot[Evaluate[Range[3]],{x,0,1}])
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Fri, 6 Jun 2003 09:50:43 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Actually the problem seems to be fairly deep.

Consider:

In[1]:=
a={1,2,3}

Out[1]=
{1,2,3}

In[2]:=
b=Range[3]

Out[2]=
{1,2,3}

In[3]:=
a===b

Out[3]=
True

So a and b are identical. Yet Plot[Evaluate[a],{x,0,1}] works and 
Plot[Evaluate[b],{x,0,1}] doesn't? So where is the difference. Well:

In[4]:=
Developer`PackedArrayQ[a]

Out[4]=
False

In[5]:=
Developer`PackedArrayQ[b]

Out[5]=
True

So, by the famous principle of Sherlock Holmes that when you have 
eliminated all other possibilities whatever remains must be the truth, 
I believe that the answer must lie in the fact that Plot sees a packed 
array as a single object rather than a list of objects. But whether 
this is a bug or not is hard to say. I don't think this behaviour was 
intended (presumably Plot could unpack any packed arrays that are 
passed to it) but it seems to me pretty harmless.

Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/
http://platon.c.u-tokyo.ac.jp/andrzej/


On Thursday, June 5, 2003, at 08:31  pm, Martin wrote:

> I don't get it.
>
> It boils down to plotting multiple lines:
>
> Plot[{1,2,3},{x,0,1}] works.
>
> That Plot[Range[3],{x,0,1}] does not work
> I understand (non-standard evaluation in
> Plot), but what is the problem with
>
> Plot[Evaluate[Range[3]],{x,0,1}] ?
>
> Why does Evaluate not do its job for Range?
> It does work with Table as in
>
> Plot[Evaluate[Table[i,{i,3}]],{x,0,1}]
>
> I changed the Attributes of Range to match
> Table's, that did not fix it.
>
> Some deeper reason or just a bug?
>
> I am using Mathematica 4.0.1, W2k
>
>
>


  • Prev by Date: Re: structs/records in mathematica
  • Next by Date: Re: Boolean type-checking
  • Previous by thread: Re: Explain this (error in Plot[Evaluate[Range[3]],{x,0,1}])
  • Next by thread: Re: Explain this (error in Plot[Evaluate[Range[3]],{x,0,1}])