Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Mystifying Scoping of Piecewise Variable?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg116160] Re: Mystifying Scoping of Piecewise Variable?
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Thu, 3 Feb 2011 05:34:15 -0500 (EST)

Disregard the "BUG ALERT". Of COURSE x still has the value -7, so  
Piecewise still returns 49 in the last plot.

Bobby

On Wed, 02 Feb 2011 11:51:20 -0600, DrMajorBob <btreat1 at austin.rr.com>  
wrote:

> (BUG ALERT. See the last line of code.)
>
> The function
>
> myFunc[y_] = Piecewise[{{x^2, x < 0}, {x, x >= 0}}]
>
> depends only on y on the left, but it depends only on x on the right.
>
> That obviously cannot work, but how, exactly, should we expect it to  
> fail?
>
> If x has no value, Piecewise has no numeric value:
>
> x=.
> Piecewise[{{x^2,x<0},{x,x>=0}}]
> \[Piecewise]	x^2	x<0
> x	x>=0
> 0	True
>
> so the first plot is empty.
>
> In the second plot, x is given values across the range from -10 to +10,  
> so Piecewise also gets numeric values:
>
> Table[myFunc[x], {x, -10, 10, 1}]
>
> {100, 81, 64, 49, 36, 25, 16, 9, 4, 1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, \
> 10}
>
> hence the second plot is not empty.
>
> That doesn't mean your definition of myFunc is suddenly a good one. It's  
> still completely wrong.
>
> But it works when you're passing x to the function AND varying x at the  
> same time.
>
> So this plot is empty (because x still has no value):
>
> Plot[myFunc[x], {y, -10, 10}]
>
> But this plot is a constant:
>
> x = -7;
> Plot[myFunc[x], {y, -10, 10}]
>
> When passing z and varying z, we see what I'd call a bug:
>
> z =.
> Plot[myFunc[z], {z, -10, 10}]
>
> It plots the value of myFunc[-7] from the previous plot, even though x  
> is not involved, and z doesn't have a value.
>
> Bobby
>
> On Wed, 02 Feb 2011 05:08:08 -0600, Frank Iannarilli <frankeye at cox.net>  
> wrote:
>
>> Perhaps I'm tired, but this is weird:
>>
>> Clear[myFunc]
>>
>> myFunc[y_] = Piecewise[{{x^2, x < 0}, {x, x >= 0}}]
>>    (Same behavior below for either Set(=) or SetDelayed(:=) )
>>
>> Plot[myFunc[y], {y, -10, 10}]
>>   (returns empty plot)
>>
>> Plot[myFunc[x], {x, -10, 10}]
>>   (returns "expected" piecewise function plot)
>>
>> What is the scoping of the Piecewise variable, in this case "x"?
>>
>> How can one write a Module that creates and returns a Piecewise  
>> function?   The scope of its argument is unclear to me.
>>
>> Thanks
>>
>
>


-- 
DrMajorBob at yahoo.com


  • Prev by Date: Re: Counting Matching Patterns in a Large File
  • Next by Date: Re: How to start new input line?
  • Previous by thread: Re: Mystifying Scoping of Piecewise Variable?
  • Next by thread: Plot artifact of NDSolve result