How to | Create Definitions for Variables and Functions

Mathematica has a very general notion of functions, as rules for arbitrary transformations. Values for variables are also assigned in this manner. When you set a value for a variable, the variable becomes a symbol for that value.

Here is a simple transformation rule. It says: whenever you see , replace it by 3:

In[31]:=
Click for copyable input
Out[31]=

The variable has a value of 3.

Whenever you evaluate an expression, 3 is substituted for :

In[32]:=
Click for copyable input
Out[32]=

You can remove the rule by defining a new one:

In[33]:=
Click for copyable input
Out[33]=

The new rule says: whenever you see , replace it by . So far there are no rules associated with , so its value is itself.

Assign a value to :

In[34]:=
Click for copyable input
Out[34]=

Now if you evaluate , the rule for says to replace by , and the rule for says to replace by 4, so the result is , or 16:

In[35]:=
Click for copyable input
Out[35]=

If you change the value of , then the value of changes:

In[36]:=
Click for copyable input
Out[36]=
In[37]:=
Click for copyable input
Out[37]=

Now assign a value to , like this:

In[38]:=
Click for copyable input
Out[38]=

Since has already been assigned the value 3, the rule you have defined is "replace by 9", not "replace by ". So does not depend on :

In[39]:=
Click for copyable input
Out[39]=
In[40]:=
Click for copyable input
Out[40]=

This happened because when a rule is defined using (Set), the right-hand side is evaluated before the rule is defined.

You can also define rules using (SetDelayed), like this:

In[41]:=
Click for copyable input

When a rule is defined with the right-hand side is not evaluated before the rule is defined. So even if already has a value, this new rule says: whenever you see , replace it with . So in this case, depends on :

In[42]:=
Click for copyable input
Out[42]=
In[43]:=
Click for copyable input
Out[43]=
In[44]:=
Click for copyable input
Out[44]=

Functions in Mathematica are defined by rules that act on patterns. Here is a simple one:

In[45]:=
Click for copyable input

is a pattern in which stands for any expression (which is represented on the right-hand side by the name ). The rule says: if you have of any expression, replace it by that expression squared:

In[46]:=
Click for copyable input
Out[46]=
In[58]:=
Click for copyable input
Out[58]=

Here is a function with two arguments:

In[48]:=
Click for copyable input
In[49]:=
Click for copyable input
Out[49]=

Always use to define functions, otherwise the variables on the right-hand side may not represent the associated expressions on the left-hand side, since they will be evaluated before the rule is defined:

In[50]:=
Click for copyable input
Out[50]=

That happened because is 9 and is 3. This rule says that anything matching the pattern is replaced by 90:

In[59]:=
Click for copyable input
Out[59]=
New to Mathematica? Find your learning path »
Have a question? Ask support »