[Date Index]
[Thread Index]
[Author Index]
Re: := vs. =
*To*: mathgroup at smc.vnet.net
*Subject*: [mg8943] Re: [mg8858] := vs. =
*From*: penny at suu.edu (Des Penny)
*Date*: Sat, 4 Oct 1997 22:08:19 -0400
*Sender*: owner-wri-mathgroup at wolfram.com
>When I define a function on Mathematica, I use f[x_]=xxxxx, without
>using a colon. It seems to work just fine. Is there a risk in leaving
>out the colon? Thanks.
>
>Frank
Hi Frank:
Yes there is a danger. If you don't understand the difference, I recommend
that you use the delayed definition :=
Look at the following code to understand the difference:
In:
c=5;
f[x_]= Sin[c x]
g[x_] := Sin[c x]
We can now get information on how these functions are stored:
In:
?f
Out:
Global`f
f[x_] = Sin[5*x]
In:
?g
Out:
Global`g
f[x_] = Sin[c*x]
If we now change the value of c, we see that the definition of f is
unchanged whereas g is changed:
In:
c=6;
f[x]
Out:
Sin[5 x]
In:
g[x]
Out:
Sin[6 x]
Thus, the delayed definition, :=, causes Mma to store the definition
without using the current value of c. For most uses this is the preferred
way to define a function.
There are however a few cases where it is preferable to use the immediate
definition:
In:
Clear[f];
f[x_]=Integrate[Sin[t], {t,0,x}]
Timing[Table[f[x], {x,0,5,0.01}]][[1]]
Out:
0.183 Second
In:
Clear[g];
g[x_]:=Integrate[Sin[t], {t,0,x}]
Timing[Table[g[x], {x,0,5,0.01}]][[1]]
Out:
47.53 Second
The reason for the above becomes clear when you look at how Mma stores the
definitions of f and g:
?f
Global`f
f[x_]=1-Cos[x]
?g
Global`g
g[x_]:=Integrate[Sin[t],{t,0,x}]
Therefore, the immediate definition, =, forces an immediate evaluation of
the integral. The answer is stored as the definition of f. The delayed
definition, :=, just stores the integral. Thus g must be integrated afresh
for each of the 500 values of x between 0 and 5.
I use the immediate definition whenever I need to force the evaluated form
of the definition to be stored by Mma. Otherwise I use the delayed
definition.
Hope this helps.
Cheers,
Des Penny
-------------------------------
Des Penny
Physical Science Dept.
Southern Utah University
Cedar City, UT 84720
VOICE: (Office): (801) 586-7708
(Home) : (801) 586-2286
FAX: (801) 865-8051
e-mail: penny at suu.edu
-------------------------------
Prev by Date:
**Fwd: FindRoot**
Next by Date:
** Re: **
Previous by thread:
**RE: := vs. =**
Next by thread:
**debugging**
| |