Re: Evaluation Question
- To: mathgroup at smc.vnet.net
- Subject: [mg76483] Re: Evaluation Question
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 23 May 2007 05:12:46 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- 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 Hi, You can use either Map or Apply (depending on whether your function accept a list of three arguments) over a list of lists. For instance, In[1]:= pts = {{0, 0, 0}, {0, 0, 1}, {0, 1, 0}, {0, 1, 1}, {1, 0, 0}, {1, 0, 1}, {1, 1, 0}, {1, 1, 1}}; (* Map *) Clear[f] f[{a_, b_, c_}] = a + b + c; f /@ pts (* Apply *) Clear[f] f[a_, b_, c_] = a + b + c; Apply[f, pts, {1}] Out[4]= {0, 1, 1, 2, 1, 2, 2, 3} Out[7]= {0, 1, 1, 2, 1, 2, 2, 3} Cheers, Jean-Marc