MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

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




  • Prev by Date: Re: Bug in 5.1,Linux, GUIKit?
  • Next by Date: Re: Solve Feature?
  • Previous by thread: Re: multiple outputs from a function
  • Next by thread: Re: multiple outputs from a function