Re: How to extract functions from a list and call them with any argument?
- To: mathgroup at smc.vnet.net
- Subject: [mg65950] Re: How to extract functions from a list and call them with any argument?
- From: albert <awnl at arcor.de>
- Date: Mon, 24 Apr 2006 06:02:05 -0400 (EDT)
- References: <e2fkto$bp7$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi, > I have a list of functions, i.e., > > funclist = {Sin[x], x^3, Cos[x]^2}. > actually I would call this a list of expressions... > I can extract each of the functions, like > > In[1]:=funclist[[1]] > Out[1]=Sin[x] > > , but I don't know how to call these functions with a general argument. > If I type > > In[2]:=funclist[t][[1]] > This is because these are expressions, not functions, so one way to get what you want would be: In[6]:= funclist[[1]]/.x->t Out[6]= Sin[t] It extracts the first expression and replaces x by t. In such cases it is often a better idea to really work with functions, which can be defined in various ways: funclist2 = {Sin,#^3&,Function[{x},Cos[x]^2]} then> In[9]:= funclist2[[2]][t] 3 Out[9]= t does what you probably want to achieve, note that you first extract the part you want and then append the argument. If for some reason you want it the other way round you could define funclist as a function that returns a list of expressions: funclist3 = Function[{x},{Sin[x], x^3, Cos[x]^2}] In[11]:= funclist3[t][[3]] 2 Out[11]= Cos[t] Anyway, for almost any application I can think of I would recommend funclist2... Note that for any function that has a name, as Sin, it is good enough to just use that name without an argument, for functions with no names mathematica supplies pure functions in the long form Function[{args},body], in short notation #n are the arguments and the function expression is terminated with a &. Look it up in the online help to learn more, which is a good idea anyway... hth albert > , I get > > Out[2]=t > > instead of Sin[t] (or t^3 or Cos[t]^2) > > What I would like is to extract a function from the list and to call it > with any argument, as it was defined in a standard way: > f[x_]:=Sin[x]. > > Dom