MathGroup Archive 2005

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

Search the Archive

Re: Problem with multiple function calling from a novice...

  • To: mathgroup at smc.vnet.net
  • Subject: [mg58589] Re: Problem with multiple function calling from a novice...
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Sat, 9 Jul 2005 04:07:50 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, England
  • References: <dal1tq$ibc$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

sami wrote:
> Hi all. I have a small problem, and I would like some help.
> 
> Suppose I define a few functions, say a,b,c etc.
> 
> Question 1: How can I call them from inside a program, so that they
> ALL
> show what they evaluate in turn? (Not just the last one, but each
> one.)
> 
> Question 2: How can I modify an If...Then clause of the form:
> 
> If[ <Condition> , a;b;c;...etc.]
> 
> or a While loop:
> 
> While[ <Condition> , a;b;c;...etc.]
> 
> so that, again, they ALL show what they evaluate in turn? (Again, not
> just
> the
> last one like in this case).
> 
> Thank you
> 
> Sami
> 
Hi Sami,

At least to methods come up in my mind.

First, you can write your functions as usual and wrap them within a list 
in the body of the main function.

In[1]:=
Clear[f, g, h]

In[2]:=
f[x_] := x^2 + 2

In[3]:=
g[x_] := Sin[x]

In[4]:=
h[x_] := Module[{}, {f[x], g[x], g[f[x]]}]

In[5]:=
h[Pi]

Out[5]=
{2 + Pi^2, 0, Sin[2 + Pi^2]}

Second, to get more control on what the functions are displaying and to 
use them within a *If* or *While* loop, it is better to use some *Print* 
command within each function whenever you want to display some 
intermediate results.

In[6]:=
Clear[f, g, h]

In[7]:=
f[x_] := Module[{y}, y = x^2 + 2;
     Print[StringJoin["f(", ToString[x], ")=",
       ToString[y]]]; y]

In[8]:=
g[x_] := Module[{y}, y = Sin[x];
     Print[StringJoin["g(", ToString[x], ")=",
       ToString[y]]]; y]

In[9]:=
h[x_] := Module[{}, f[x]; g[x]; g[f[x]]]

In[10]:=
h[2]

 From In[10]:=
"f(2)=6"

 From In[10]:=
"g(2)=Sin[2]"

 From In[10]:=
"f(2)=6"

 From In[10]:=
"g(6)=Sin[6]"

Out[10]=
Sin[6]

In[11]:=
main[x_] := Module[{i}, i = 2; While[i > 0,
      f[x]; g[x]; g[f[x]]; i--; ]]

In[12]:=
main[3]

 From In[12]:=
"f(3)=11"

 From In[12]:=
"g(3)=Sin[3]"

 From In[12]:=
"f(3)=11"

 From In[12]:=
"g(11)=Sin[11]"

 From In[12]:=
"f(3)=11"

 From In[12]:=
"g(3)=Sin[3]"

 From In[12]:=
"f(3)=11"

 From In[12]:=
"g(11)=Sin[11]"

Best regards,
/J.M.


  • Prev by Date: Re: Don't understand behaviour of Solve[]
  • Next by Date: Re: GroebnerBasis (was Re: Documentation)
  • Previous by thread: Re: Problem with multiple function calling from a novice...
  • Next by thread: GroebnerBasis (was Re: Documentation)