Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

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

Search the Archive

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 ":="