## 2.2.9 Advanced Topic: Working with Operators

You 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.
 In[3]:=  %[x]
 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.
 In[4]:=  (f + g)[x]
 Out[4]=
Using Through, you can convert the expression to a more explicit form.
 In[5]:=  Through[%, Plus]
 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.
 In[7]:=  % [x^2]
 Out[7]=
You can use Through to apply the operator.
 In[8]:=  Through[%, Plus]
 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.
 In[10]:=  Expand[%]
 Out[10]=