RE: Howto vonvert a list of functions in a list valued function
- To: mathgroup at smc.vnet.net
- Subject: [mg28290] RE: [mg28253] Howto vonvert a list of functions in a list valued function
- From: "David Park" <djmp at earthlink.net>
- Date: Sat, 7 Apr 2001 03:44:49 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Thomas,
You want to use the Through command.
funlist = {f1, f2, f3, f4};
funlist[x]
% // Through
{f1, f2, f3, f4}[x]
{f1[x], f2[x], f3[x], f4[x]}
You could make your functions pure functions.
{#1^2 & , 1 + #1 + 2*#1^2 & , 1/(Cos[#1] + 1) & }[x]//Through
{x^2, 1 + x + 2*x^2, 1/(1 + Cos[x])}
However, Through doesn't work well when it is used with a combination of
undefined function names and constants. Through pushes the x only one level
at a time, and onto everything.
{f1, f1 + f2, 1 + a + f1*f2, a*f1*f2^2}[x]
%//Through
Through /@ %
{f1, f1 + f2, 1 + a + f1*f2, a*f1*f2^2}[x]
{f1[x], (f1 + f2)[x], (1 + a + f1*f2)[x],
(a*f1*f2^2)[x]}
{Through[f1[x]], f1[x] + f2[x], 1[x] + a[x] +
(f1*f2)[x], a[x]*f1[x]*(f2^2)[x]}
There is a Mathematica package at my web site called Algebra`PushThrough`
which makes it easier to tailor the use of Through.
Needs["Algebra`PushThrough`"]
With PushOnto you can tell Mathematica precisely which names the argument(s)
are to be pushed onto.
{f1, f1 + f2, 1 + a + f1*f2, a*f1*f2^2}[x]
% // PushOnto[{x}, {f1, f2}]
{f1, f1 + f2, 1 + a + f1*f2, a*f1*f2^2}[x]
{f1[x], f1[x] + f2[x], 1 + a + f1[x]*f2[x],
a*f1[x]*f2[x]^2}
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
> -----Original Message-----
> From: Thomas Neff [mailto:t.neff at gsi.de]
To: mathgroup at smc.vnet.net
> Sent: Friday, April 06, 2001 1:53 AM
> To: mathgroup at smc.vnet.net
> Subject: [mg28290] [mg28253] Howto vonvert a list of functions in a list valued
> function
>
>
> I have a list of functions, say
>
> funlist = {f1, f2, f3, ..., fn}
>
> I want to construct a function f, so that
>
> f[x] gives the list {f1[x], f2[x], f3[x], ... fn[x]}
>
> f[x_] = funlist[x] doesn't work ;-(
>
> Is there an elegant way to do this in Mathematica ?
>
>
> Thanks
>
> Thomas
>
> --
> Thomas Neff
> Gesellschaft fuer Schwerionenforschung (GSI)
> Email: t.neff at gsi.de - PGP key available
> WWW: http://theory.gsi.de/~tneff/tneff.html
>