Re: Evaluation Question
- To: mathgroup at smc.vnet.net
- Subject: [mg76464] Re: Evaluation Question
- From: Albert <awnl at arcor.net>
- Date: Wed, 23 May 2007 05:02:55 -0400 (EDT)
- References: <f2u57d$k2n$1@smc.vnet.net>
hoffmannick wrote: > Can anyone help me solve the following problem? > > I have a function of 3 variables, let's say > f[a_, b_, c_] = a + b + c > > Now I need to evaluate the function at some given points. To evaluate > at a single point I would do > f[0,0,1] > > For the point (0,0,1) > > Now here is the main question. > I need to evaluate this function at the points (0,0,0) through (1,1,1) > That would be the points: > 0,0,0 > 0,0,1 > 0,1,0 > 0,1,1 > 1,0,0 > 1,0,1 > 1,1,0 > 1,1,1 > > I'm testing these for approx 32 different functions. Is there an easy > way that I can define the function and then have it test all the > points for me? It will always be those finite points listed above. > > I looked into the mathematica documentation and it said how to do this > with a function of a single variable, but it didn't say how to do it a > function of more than one variable. > > I really appreciate your help > > I think the easiest for this case is to use a special Form of Apply: In[32]:= f[a_, b_, c_] = a + b + c Out[32]= a + b + c In[33]:= points = {{0, 0, 0}, {1, 0, 0}, {0, 1, 0}} Out[33]= {{0, 0, 0}, {1, 0, 0}, {0, 1, 0}} In[35]:= Apply[f, points, {1}] Out[35]= {0, 1, 1} that's a shortcut for it: In[34]:= f @@@ points Out[34]= {0, 1, 1} this also works, but is more elaborate for multiple arguments: In[40]:= Map[Apply[f, #] &, points] Out[40]= {0, 1, 1} In[41]:= f @@@ points Out[41]= {0, 1, 1} hth, albert