Re: Using "=" vs ":="

• To: mathgroup at smc.vnet.net
• Subject: [mg70694] Re: Using "=" vs ":="
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Mon, 23 Oct 2006 02:50:54 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <ehf1ks\$5ds\$1@smc.vnet.net>

misha wrote:
> I'm going through Mathematic by Example, 2nd ed., (Abell and Braselton),
> and have come across something that puzzles me.
>
> Chapter 2, Section 2, Example 8
> Define f(x,y)=1-sin(x^2+y^2)
>
> So I first try,
> In[1]:= f[x_, y_]:=1-Sin(x^2+y^2)
> No problem so far...
> Then,
> In[2]:= f[x,y]
> Out[2]:=1-Sin(x^2+y^2)
> Still no problem...
> Then,
> In[3]:=f[1,2]
> Out[3]:=1-5 Sin
>
> Huh?

This has nothing to do with Set vs. SetDelayed. You are using the wrong
syntax. See "Your First Mathematica Calculations" at
http://documents.wolfram.com/mathematica/GettingStarted/StartingOut/YourFirstMathematicaCalculations.html

*Built-in functions are capitalized. Arguments to functions are wrapped
with /square/ brackets. Sin[x]*

In[1]:=
f[x_, y_] := 1 - Sin[x^2 + y^2]

In[2]:=
f[x, y]

Out[2]=
2    2
1 - Sin[x  + y ]

In[3]:=
f[1, 2]

Out[3]=
1 - Sin[5]

In[4]:=
N[%]

Out[4]=
1.95892

> I noticed that rather than using ":=" to "simply define" this function,
> as opposed to (just) "=" to "define and compute" this function, I get
> different subsequent behavior.  Specifically, doing the above with just
> "=", works fine.
> In[1]:= f[x_, y_]=1-Sin(x^2+y^2)
> ....
> In[3]:=f[1,2]
> Out[3]:=1-Sin[5]
>
> My question is, Why?  What's the difference between ":=" and "=" for
> defining functions?
>
> Thanks!
> Misha
>

For example,

In[5]:=
g = Random[]

Out[5]=
0.624668

In[6]:=
{g, g, g}

Out[6]=
{0.624668, 0.624668, 0.624668}

In[7]:=
h := Random[]

In[8]:=
{h, h, h}

Out[8]=
{0.17459, 0.0433796, 0.504572}

Regards,
Jean-Marc

• Prev by Date: Re: Using "=" vs ":="
• Next by Date: Re: Re: Problem in loading packages in Mathematica
• Previous by thread: Re: Using "=" vs ":="
• Next by thread: Re: Using "=" vs ":="