MathGroup Archive 2003

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

Search the Archive

Re: Defining function in loop

  • To: mathgroup at smc.vnet.net
  • Subject: [mg40424] Re: [mg40412] Defining function in loop
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sat, 5 Apr 2003 03:57:25 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Use Map instead of Do:

In[1]:=
Clear[g]
g[x_]:=0/;x<0
Map[(g[x_]:=#/;#-1¡Âx¡Â#)&,Range[3]];
g[x_]:=4/;x>3

In[5]:=
Table[g[x],{x,-1,4,.5}]

Out[5]=
{0,0,1,1,1,2,2,3,3,4,4}

The reason why your code does not work is that inside the Do loop the 
right hand side of g[x_] := i/;i-1<=x<=i is not evaluated so your i's 
do not acquire any numerical values. Replacing := by = also won't work 
because of the HoldAll attribute of Condition.

On Friday, April 4, 2003, at 03:27  pm, Vadim Nagornyi wrote:

> Hello,
> I am definihg step-like function
>
> Clear[h]
> h[x_] := 0/;x<0
> h[x_] := 1/;0<=x<=1
> h[x_] := 2/;1<=x<=2
> h[x_] := 3/;2<=x<=3
> h[x_] := 4/;x>3
>
> It works fine:
>
> Table[h[x],{x,-1,4,.5}]
> {0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 4}
>
> As I may need more steps, I am trying to do the same in loop:
>
> Clear[g]
> g[x_] := 0/;x<0
> Do[g[x_] := i/;i-1<=x<=i, {i,3}]
> g[x_] := 4/;x>3
>
> This time no luck:
>
> Table[g[x],{x,-1,4,.5}]
> {0, 0, 1, 1, 1, 2, 2, 3, 3, 4, 4}
> {0, 0, g[0.], g[0.5], g[1.], g[1.5], g[2.], g[2.5], g[3.], 4, 4}
>
> How to do this?
>
> Thanks.
> Vadim.
>
>
>
Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/
http://platon.c.u-tokyo.ac.jp/andrzej/



  • Prev by Date: Re: Re: bug with definitions?
  • Next by Date: Re: dynamic programming inside a function
  • Previous by thread: Re: Defining function in loop
  • Next by thread: RE: Defining function in loop