Re: Basic questions on _Plus and recursion
- To: mathgroup at smc.vnet.net
- Subject: [mg120950] Re: Basic questions on _Plus and recursion
- From: Peter Pein <petsie at dordos.net>
- Date: Thu, 18 Aug 2011 03:23:59 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201108131049.GAA25524@smc.vnet.net> <j28ek0$3el$1@smc.vnet.net>
Hi, To make things look more like Mathematica and to speed things up I would recommend a non-recursive version of Heike's pattern matching function (and I changed "Scalar" to ScalarQ retrning True|False): g[a___, b_ ? ScalarQ, c___] := Block[ {sc = Pick[#, ScalarQ @ #]&[{a, c}]}, (b Times @@ sc) * (g @@ DeleteCases[{a, c}, Alternatives @@ Union[sc]]) ] You might want to have a look at http://dl.dropbox.com/u/3030567/Mathematica/factor_scalars.nb where you'll find a very simple comparison of f and g. Regards, Peter Am 14.08.2011 14:21, schrieb Heike Gramberg: > For the second part of your question you could do something like > > f[a___, b_ /; Scalar[b] == 1, c___] := b f[a, c] > > example: > > Scalar[a] = 1; > Scalar[c] = 1; > f[a, b, c] > > output: > > a c f[b] > > Heike > > On 13 Aug 2011, at 12:49, Ethan Dyer wrote: > >> Hi. I'm sure these are common issues, but I haven't found them. Here > are the two, unrelated questions. Thank you for the help. >> >> 1) I want to use _Plus for a function with arbitrary arguments. ie I > want: f[a+b]=f[a]+f[b], f[a+b,c+d] to go to > f[a,c]+f[a,d]+f[b,c]+f[b,d], ... Is there a standard way to do this? >> >> 2)Here I want to pull out scalars from a function. Something like > this: >> >> f[x__] :=(Times@@Select[{x},Scalar[#]==1&]) > (f@@Select[{x},Scalar[#]!=1&]) >> >> Where i have defined a function Scalar to =1 for some symbols. >> >> for instance say I had defined Scalar[a]=1 then f[a,b,c]= a > f[b,c]. >> >> The above does not work, as it gives infinite recursion. Is there a > way to do this properly? >> >> Thank you again. Sorry if these are too common. >> >> Ethan >> > >
- References:
- Basic questions on _Plus and recursion
- From: Ethan Dyer <ethansdyer@gmail.com>
- Basic questions on _Plus and recursion