MATHEMATICA TUTORIAL

# An Example: Defining Your Own Integration Function

Now that we have introduced the basic features of patterns in Mathematica, we can use them to give a more or less complete example. We will show how you could define your own simple integration function in Mathematica.

From a mathematical point of view, the integration function is defined by a sequence of mathematical relations. By setting up transformation rules for patterns, you can implement these mathematical relations quite directly in Mathematica.

 mathematical form Mathematica definition integrate[y_+z_,x_]:=integrate[y,x]+integrate[z,x] ( independent of ) integrate[c_y_,x_]:=c integrate[y,x]/;FreeQ[c,x] integrate[c_,x_]:=cx/;FreeQ[c,x] , integrate[x_^n_.,x_]:=x^(n+1)/(n+1)/;FreeQ[n,x]&&n!=-1 integrate[1/(a_.x_+b_.),x_]:=Log[ax+b]/a/;FreeQ[{a,b},x] integrate[Exp[a_.x_+b_.],x_]:=Exp[ax+b]/a/;FreeQ[{a,b},x]

Definitions for an integration function.

This implements the linearity relation for integrals: .
The associativity of Plus makes the linearity relation work with any number of terms in the sum.
 Out[2]=
This makes pull out factors that are independent of the integration variable .
Mathematica tests each term in each product to see whether it satisfies the FreeQ condition, and so can be pulled out.
 Out[4]=
This gives the integral of a constant.
Now the constant term in the sum can be integrated.
 Out[6]=
This gives the standard formula for the integral of . By using the pattern , rather than , we include the case of .
Now this integral can be done completely.
 Out[8]=
Of course, the built-in integration function Integrate (with a capital I) could have done the integral anyway.
 Out[9]=
Here is the rule for integrating the reciprocal of a linear function. The pattern stands for any linear function of .
Here both and take on their default values.
 Out[11]=
Here is a more complicated case. The symbol now matches .
 Out[12]=
You can go on and add many more rules for integration. Here is a rule for integrating exponentials.

## Tutorial CollectionTutorial Collection

New to Mathematica? Find your learning path »
Have a question? Ask support »