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:
| Out[31]= |  |
The variable
has a value of 3.
Whenever you evaluate an expression, 3 is substituted for
:
| Out[32]= |  |
You can remove the rule by defining a new one:
| 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
:
| 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:
| Out[35]= |  |
If you change the value of
, then the value of
changes:
| Out[36]= |  |
| Out[37]= |  |
Now assign a value to
, like this:
| 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
:
| Out[39]= |  |
| 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:
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
:
| Out[42]= |  |
| Out[43]= |  |
| Out[44]= |  |
Functions in Mathematica are defined by rules that act on patterns. Here is a simple one:
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:
| Out[46]= |  |
| Out[58]= |  |
Here is a function with two arguments:
| 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:
| Out[50]= |  |
That happened because
is 9 and
is 3. This rule says that anything matching the pattern
is replaced by 90:
| Out[59]= |  |