MathGroup Archive 2003

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

Search the Archive

Re: Taking a function as a parameter of a function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg41861] Re: Taking a function as a parameter of a function
  • From: eduault <eduault at yahoo.com>
  • Date: Sat, 7 Jun 2003 00:08:51 -0400 (EDT)
  • References: <bbq8jj$d7i$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

"JustNImge" <justnimge at angelfire.com> a écrit dans le message news:
bbq8jj$d7i$1 at smc.vnet.net...
> Hi everyone I'm new to this group and new to Mathematica in general.
> Actually I'm taking a class in it but we've had very little hands on
> experience.
>
> Anyway, I was wondering if it was possible to take a function as a
> parameter of another function.  What I've been trying to do is make a
> list of x^2+y^2  but increase x and y by one each time so I would have
> (x+1)^2+(y+1)^2 etc.  Actually the function I'm trying to write for my
> class is more complicated than that but I'm trying to figure this out
> first.  When I try to do this, I get:
> In[5]:= test[y1_[x_,y_]]:=Table[y1[x+i,y+i],{i,3}]
>
> In[6]:= test[x^2+y^2]
>
>                         2    2          2    2           2    2
> Out[6]= {2 + x  + y , 4 + x  + y , 6 + x  + y }
>
> Is it just not possible to take x and y as their own parameters like
> this?
> I'm sorry if this has been addressed before but when I browsed
> subjects last night there didn't seem to be anything within the first
> 100.
> Thank you very much for any and all help.
> JustNImge
>

In your example, x^2+y^2  is considered by Mathematica as the expression
"Plus[Power[x, 2], Power[y, 2]" ,
so the y1 parameter will be mapped to the "Plus" (+) function, x to
"Power[x, 2]", and y to "Power[y, 2]".
 y1[x+i,y+i] is evaluated as Plus[ Power[x, 2]+i , Power[y, 2]+i ], or in a
simpler form as x^2+y^2+2*i.

You should try :

In[46]:= f[x_, y_] := x^2 + y^2;
In[47]:= test[f_, x_, y_] := Table[f[x + i, y + i], {i, 3}];
In[48]:= test[f, x, y]
Out[49]= {(1 + x)^2 + (1 + y)^2, (2 + x)^2 + (2 + y)^2, (3 + x)^2 + (3 +
y)^2}

ou with a pure function (#1^2 + #2^2 &) instead of f:

In[50]:= test[f_, x_, y_] := Table[f[x + i, y + i], {i, 3}];
In[51]:= test[#1^2 + #2^2 &, x, y]
Out[52]= {(1 + x)^2 + (1 + y)^2, (2 + x)^2 + (2 + y)^2, (3 + x)^2 + (3 +
y)^2}


In[53]:= Expand[%]
Out[54]= {2 + 2*x + x^2 + 2*y + y^2, 8 + 4*x + x^2 + 4*y + y^2, 18 + 6*x +
x^2 + 6*y + y^2}


If this code is not what you expect, you should give a complete example,
saying what what the "y1_[x_,y_]]" you really use is, what the y1, x and y
are in this expression, and what the expected transformation / result is.





  • Prev by Date: RE: Quick "Random[]" question
  • Next by Date: Re: Re: Re: A bug?......In[1]:= Sum[Cos[x], {x, 0, Infinity, Pi}]......Out[1]= 1/2
  • Previous by thread: Re: Taking a function as a parameter of a function
  • Next by thread: Re: Taking a function as a parameter of a function