Transcript Mathematica

Document Analysis:
Exploration of Mathematica 6
Prof. Rolf Ingold, University of Fribourg
Master course, spring semester 2008
Prénom Nom
Outline







Basics of Mathematica
Numerical and symbolic computation
List manipulation
Variable and functions
Transformation rules and patterns
Graphics
Functional and imperative programming
2
© Prof. Rolf Ingold
Mathematica Basics

Mathematica runs two process
 a front end displaying editable notebooks
 a back end running the kernel for computation

Notebooks and the kernel communicate by exchanging
expressions
 input expressions are written in the Mathematica language
 output expressions (returned by the kernel) are displayed in an
appropriate form
© Prof. Rolf Ingold
Mathematica expressions

In Mathematica everything, i.e. data, programs, formulas, graphics,
documents are represented as symbolic expressions

All expressions have a standard form
f[a,b,…]
reflecting the internal structure, where
 f is the head
 a,b are the arguments

The Mathematica language allows richer expressions
FullForm[1+x^2+(y+z)^2]
 Plus[1,Power[x,2],Power[Plus[y,z],2]]
© Prof. Rolf Ingold
Predefined functions

Mathematica offers more than 2'200 predefined functions in
 Numerical computation
 evaluation on integer, rational, real, complex numbers,
vectors and matrices
 equation solving
 numerical calculus
 Symbolic computation
 calculus (integral and differential)
 polynomial and other algebras
 discrete mathematics
 Data manipulation (list manipulation, combinatory, statistics, ...)
 Visualization and graphics (with interactive control)
 Programming (functional and imperative style)
 Access to external resources (files, databases, libraries)

Various specialized add-ons are available
© Prof. Rolf Ingold
Numerical computation

Mathematica provides exact calculation whenever possible
(typically on integer and rational numbers)
2^100
 1267650600228229401496703205376
12/234+56/789
 418/3419

Mathematica allows the evaluation of numerical expressions with
arbitrary precision
N[Sqrt[2],30]
 1.41421356237309504880168872421
N[12/234+56/789,40]
 0.1222579701667154138637028370868675051185

Additionally, Mathematica is able to control accuracy
© Prof. Rolf Ingold
Symbolic computation

Mathematica offers many functions to perform symbolic computation
 formula manipulation
Simplify[(x^2-1)/(x-1)]
 1 + x
 equation solving
Solve[x^2-(1+a)*x+a==0,x]
 {{x -> 1}, {x -> a}}
 calculus
D[Sin[x]^2,x]
 2 Cos[x] Sin[x]
Integrate[6*x^2,x]
 2 x^3
© Prof. Rolf Ingold
List manipulation

In Mathematica lists are used to represent collections, arrays, sets,
vectors and matrices, etc.
 lists are represented by {a,b,…} or {{a,b},{c,d},…}
 elements are extracted using the Part operator : lst[[i]]

Many functions are "listable", that is are applicable on each element
2*{3,5,x}
 {6, 10, 2 x}
{2,4,x}*{3,5,x}
 {6, 20, x^2}

There are hundreds of other functions generating lists: Range,
Array, Table, Join, Take, Drop, Select, Map, etc.
© Prof. Rolf Ingold
Iterative function

The function Table[expr,iter1,…] generates a list by applying
one or several iterators iter1, … over the expression expr
Table[i^2,{i,10}]
 {1, 4, 9, 16, 25, 36, 49, 64, 81, 100}

Iterators have one of the following forms
 {max} iterates max times
 {var,max} iterates with var running from 1 to max
 {var,min,max} with var running from min to max
 {var,min,max,step} with var running from min to max
by step
© Prof. Rolf Ingold
Use of variables

In Mathematica any expression may be assigned to variable
 an assignment has the form var=expr
 then, in subsequent expressions each occurence of var will
be replaced by expr
x=a+b+c;
2x
 2 (a + b + c)
 a variable is unset (removed) by var=. , Unset[var], or
Clear[var]
© Prof. Rolf Ingold
Definition of functions

In Mathematica new functions may be defined
 a function definition has the form f[x_]:=expr
 in subsequent expressions f[a] will result in the evaluation of
expr by substituting x by a
x = a + b + c;
f[x_] := x^2;
f[{12, a, x}]
 {144, a^2, (a + b + c)^2}
© Prof. Rolf Ingold
Immediate and delayed assignments

There are two different ways to make assignments in Mathematica
 lhs=rhs is said immediate assignment because rhs is
evaluated when the assignment is made
 lhs:=rhs is said delayed assignment because rhs is
evaluated each time the value of rhs is requested

By default, assignments are defining global variables
 name conflicts are often sources of errors !

By convention user defined variables and functions should start with
a lowercase letter
© Prof. Rolf Ingold
Transformation rules

An interesting programming paradigm of Matematica is the concept
of transformation rules
 a transformation rule is written lhs->rhs
 transformations are obtained by applying rules to expressions
using expr/.rule or expr/.{rule,…}
{x,x^2,y}/.x->a
 {a, a^2, y}
x+y/.{{x->1,y->2},{x->4,y->2}}
 {3, 6}
f[1]+f[2]+f[4]/.{f[x_]->x^2}
 {a, a^2, y}

Rules are used to define options
© Prof. Rolf Ingold
Patterns




Mathematica defines a pattern language to describe classes of
expressions
Patterns are used to restrict the functions and rules
 _ represents any expression
 x_ (or x:_) represents any expression and is referred to as x
 x_h (or x:_h) represents an expression (referred to as x)
with head h
Patterns can be composed recursively and include constraints
 _[_:List] represents any function having a list as argument
 _[x_,x_] represents any function having twice the same
argument
Additionally patterns can be restricted by tests (pat?test) or by
conditions (pat/;cond)
 x_?NumberQ
 x_/;x<0
© Prof. Rolf Ingold
Graphics

In Mathematica graphics are generated by expressions
ListPlot[
Table[
{k,PDF[BinomialDistribution[50,p],k]},
{p,{0.3,0.5,0.8}},
{k,0,50}],
Filling->Axis]

© Prof. Rolf Ingold
Functional programming

Several predefined functions are useful for functional programming
 Apply[f,expr] replaces the head of expr by f and
evaluates it
 Map[f,list] applies the function f to each element of list
 Nest[f,expr,n] gives an expression with f applied n times
to expr
 NestList[f,expr,n] does the same but returns the list of all
intermediate results

Mathematica can handle pure functions, without explicit names
 they are written body& in which #1, #2, ... represent the
arguments (or # for a single argument)
Map[(2^#)&,Range[10]]
 {2, 4, 8, 16, 32, 64, 128, 256, 512, 1024}
© Prof. Rolf Ingold
Imperative programming

Mathematica provides classical control structures expressed with a
functional syntax
 If[condition,ifTrue]
 If[condition,ifTrue,ifFalse]
 Which[test1,value1,test2,value2,…]
 Switch[expr,form1,value1,form2,value2,…]
 While[test,body]
 Do[expr,iter1,…]
 For[start,test,incr,body]

Mathematica provides also block structures to control the scope of
symbols
 Module[{x,y,…},expr] with lexical scoping
 Block[{x,y,…},expr] with dynamic scoping
© Prof. Rolf Ingold