Re: multiple outputs from a function
- To: mathgroup at smc.vnet.net
- Subject: [mg52787] Re: [mg52753] multiple outputs from a function
- From: "David Park" <djmp at earthlink.net>
- Date: Mon, 13 Dec 2004 04:22:44 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Ben,
Just output a list.
squareandcube[x_] := {x^2, x^3}
If you want to further use the results you can use the function this way.
{x2, x3} = squareandcube[5]
{25, 125}
x3/x2
5
For a complicated calculation you can use a Module, assemble the various
results and then return them in a list.
f[x_]:=
Module[{result1, result2, result3},
result1 = (calculation);
result2 = (calculation);
result3 = (calculation);
{result1, result2, result3}]
Setting some of the results as a side effect is probably a poor method.
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: Ben Barrowes [mailto:barrowes at alum.mit.edu]
To: mathgroup at smc.vnet.net
I feel I must be missing something fundamental...
How do you write a function (or ?) in Mathematica which produces more
than one output?
Let's say I have some data and I want a single function to calculate the
mean, variance, std, etc, more than one thing and return those? I know
that there are builtin functions for those parameters, but the point is
I want to define functions with more than one output.
The only examples I can find are along the lines of:
f[x_,y_]:=x^2+y^2;
which have only a single result.
Is there a different structure altogether, such as a Subroutine, which
allows multiple results from a single subunit?
One thought I had was that because Mathematica treats everything as
global unless defined specifically local (e.g. in a module), that
variables used in a procedure would be accessible and would thus be a
"result", but it seems scoping problems would arise if this was used too
often. For example:
In[67]:=
t1[x_,y_]:=(a1=x^2+y;a2=x+y^2;x+y)
In[68]:=
t2=t1[5,6]
Out[68]=
11
In[69]:=
a1
Out[69]=
31
In[70]:=
a2
Out[70]=
41
Is this the accepted method for extracting multiple results from one
function definition?
Ben Barrowes