MathGroup Archive 1997

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

Search the Archive

Re: variable problems

  • To: mathgroup at smc.vnet.net
  • Subject: [mg9530] Re: [mg9512] variable problems
  • From: David Withoff <withoff>
  • Date: Thu, 13 Nov 1997 01:39:58 -0500
  • Sender: owner-wri-mathgroup at wolfram.com

> Hello,
> I am I wrote a package on mathematica for strain computations  and
> diagrams in mechanics but I have a problem.
>
> Does anyone know how can I modify the value of a parameter  of a
> function inside the declaration of the function? Here is an example:
>
> f[x_,y_]:=Module[
> {a1,a2,a3},
> a1=x+y;
> x=1;  <------- this line causes an error message  ];
>
> Note that I could use a local variable a1 for this putting a line
> a1=x;a1=1;  but because of the complexity  of the source code i wrote ,
> it's not possible to rewrite  every line of code.
>
>
> Thanks you..
>
> If it is possible send me this answer to my email: mtousis at rodopi.cc.du
>
> Manolis Toussis
> Student of the Civil Engineer Department of Democritus University Of
> Thrace.

This can be done by passing x, rather than the value of x, as the
argument to the function f.  Mathematica by default passes the value of
x to f, which will lead to errors such as

In[1]:= f[x_]:= Module[{}, x=1]

In[2]:= x = 5;

In[3]:= f[x]

Set::setraw: Cannot assign to raw object 5.

Out[3]= 1

To pass the value of x, it is necessary to prevent x from being
evaluated before it is passed to f.  This can be done using
Unevaluated:

In[4]:= x = 5; f[Unevaluated[x]]

Out[4]= 1

or by setting an attributes for f:

In[5]:= SetAttributes[f, HoldFirst]

In[6]:= x = 5;

In[7]:= f[x]

Out[7]= 1

This function makes an assignment to the global value of f.  That is,
after evaluating f[x], the global values of x is 1:

In[8]:= x

Out[8]= 1

If you don't want to change the global value of x, then you will
probably want to localize x, as in

In[9]:= f[x_] := Block[{x}, Module[{}, x=1] ]

In[10]:= x = 5;

In[11]:= f[x]

Out[11]= 1

In[12]:= x

Out[12]= 5

Dave Withoff
Wolfram Research


  • Prev by Date: Re: Re: Book recommendation for
  • Next by Date: RE: variable problems
  • Previous by thread: Re: variable problems
  • Next by thread: RE: variable problems