2.2.9 Advanced Topic: Working with OperatorsYou can think of an expression like f[x] as being formed by applying an operator f to the expression x. You can think of an expression like f[g[x]] as the result of composing the operators f and g, and applying the result to x.
| Composition[f, g, ... ] | the composition of functions f, g, ... | | InverseFunction[f] | the inverse of a function f | | Identity | the identity function |
Some functional operations. | This represents the composition of the functions f, g and h. | |
In[1]:=
Composition[f, g, h]
|
Out[1]=
|
|
| You can manipulate compositions of functions symbolically. | |
In[2]:=
InverseFunction[Composition[%, q]]
|
Out[2]=
|
|
| The composition is evaluated explicitly when you supply a specific argument. | |
Out[3]=
|
|
You can get the sum of two expressions in Mathematica just by typing x + y. Sometimes it is also worthwhile to consider performing operations like addition on operators. | You can think of this as containing a sum of two operators f and g. | |
Out[4]=
|
|
| Using Through, you can convert the expression to a more explicit form. | |
Out[5]=
|
|
This corresponds to the mathematical operator . | |
In[6]:=
Identity + (D[#, x]&)
|
Out[6]=
|
|
| Mathematica does not automatically apply the separate pieces of the operator to an expression. | |
Out[7]=
|
|
| You can use Through to apply the operator. | |
Out[8]=
|
|
| Identity[expr] | the identity function | Through[p[ , ][x], q] | give p[ [x], [x]] if p is the same as q | | Operate[p, f[x]] | give p[f][x] | | Operate[p, f[x], n] | apply p at level n in f | | MapAll[p, expr, Heads->True] | apply p to all parts of expr, including heads |
Operations for working with operators. | This has a complicated expression as a head. | |
In[9]:=
t = ((1 + a)(1 + b))[x]
|
Out[9]=
|
|
| Functions like Expand do not automatically go inside heads of expressions. | |
Out[10]=
|
|
| With the Heads option set to True, MapAll goes inside heads. | |
In[11]:=
MapAll[Expand, t, Heads->True]
|
Out[11]=
|
|
| The replacement operator /. does go inside heads of expressions. | |
Out[12]=
|
|
| You can use Operate to apply a function specifically to the head of an expression. | |
Out[13]=
|
|
|