Re: Generalization of Variables ?
- To: mathgroup at smc.vnet.net
- Subject: [mg109251] Re: Generalization of Variables ?
- From: Jack L Goldberg 1 <jackgold at umich.edu>
- Date: Mon, 19 Apr 2010 02:49:50 -0400 (EDT)
Thanks Bob. I replaced "Infinity" in your code with "{-1}" and got a nice decrease in execution time. Jack Quoting Bob Hanlon <hanlonr at cox.net>: > > variables[expr_] := > Union[ > Cases[ > expr, _Symbol?(! NumericQ[#] &), Infinity]] > > expr = x + E^y + Sin[x*Pi]; > > variables[expr] > > {x,y} > > > Bob Hanlon > > ---- Jack L Goldberg 1 <jackgold at umich.edu> wrote: > > ============= > Hi Folks, > > The built-in command "Variables" does not give the (naively expected) > answer when it is called with functions such as x + Sin[x]. This > behavior is mentioned in the description of "Variables". > I have constructed a generalization of "Variables" which works as > expected - I think? I would appreciated a critique of this code which > addresses these issues: > > a) Is there a situation in which it fails? > > b) If the code works, can it be improved. > > Question b) is asked because I am not fully acquainted with all of > Mathematica's commands. > > Here is the code. > > variables[f_]:= Flatten[ > Union[ > Cases[ > Map[N,Level[f,{-1},z_Symbol]]/.True->{} > ] > > I have tried "variables" on functions coded in the obvious manner, say, > Sin[x]+Exp[x^2], Sin[x+y]-z^2, etc. and a few esoteric examples. > > Jack > > > > >