Professional Documents
Culture Documents
Mathematical Modeling
in Mathematica
Bruce E. Shapiro
Department of Biomathematics
UCLA School of Medicine
and
Jet Propulsion Laboratory
California Institute of Technology
bshapiro@ucla.edu
3 June 1998
Presented as part of
Medical Informatics: A Course for Health Professionals
Sponsored by the
National Library of Medicine
and
Marine Biology Laboratory
Water Street
Woods Hole, MA 02543
Introduction............................................3
Features of Mathematica........................4
Commercially Available Applications.........8
System Requirements.............................10
Front End vs.Kernel...............................11
Starting Mathematica............................12
Arithmetic and Algebra...........................15
Exact and Approximate Results................16
Special Constants..................................17
Vectors, Matrices and Lists.....................17
Function..............................................19
Loops.................................................21
Local Variables.....................................22
Mathematical Modeling
Equation Solving..............................33
Calculus..........................................33
Derivatives...................................33
Integration...................................34
Limits, Residues, and Series............34
Polynomial Manipulation...............35
Mathematical Functions.........................37
Basic Arithmetic...............................37
Mathematical Constants.....................37
Numerical Functions..........................37
Random Numbers..............................38
Elementary Functions........................38
Factorial-Based Functions...................38
Combinatorial Functions....................39
Functions from Number Theory...........40
Zeta Function...................................40
Hypergeometric and Related Functions..41
Orthogonal Polynomials.....................42
Elliptic Functions.............................42
Elliptic Integrals...............................43
Mathieu Functions............................43
Lists...................................................44
Construction....................................44
Element Extraction............................44
List Testing.....................................45
List Operations.................................46
Structure Manipulations.....................47
Graphics and Sound...............................48
Data Plots........................................48
Function Plots..................................48
Parametric Plots................................48
Sound Generation..............................48
Combinations of Plots.......................48
Options...........................................49
Primitives........................................50
Programming.......................................53
Assignment......................................53
Testing............................................53
Flow of Control................................54
Compound Expressions..................54
Logical Testings: If, Which, Switch.55
Looping: Do, While, For................55
Transfer of Control........................55
Functions........................................56
Pattern Matching...............................56
Rules..............................................58
Strings............................................58
References............................................59
Appendices
Lotka Volterra Notebook (On Disk) .........64
Wolfram Tutorials (On Disk)...................71
Tour of Mathematica (On Disk) ......91
Page 2
Mathematical Modeling
Introduction to Modeling in
Mathematica: Goal
To develop a basic understanding of what
Mathematica is and how it can be used to do
Modeling through
examples and hands-on experience.
What is Mathematica?
Mathematica is literally A system for doing
mathematics on the computer. [Wolfram
Research, Inc.]
Mathematica is essentially a chalkboard for
doing mathematical computations on the
computer.
It is also a computer language - but you dont
have to learn the language to use Mathematica.
It was developed in the late 1980s by Steven
Wolfram and first released in 1988.
Version 3.0 was released in 1996.
Bruce E. Shapiro
Woods Hole, 1998
Page 3
Mathematical Modeling
Features of Mathematica
It can be used as a calculator
Solves complicated numerical equations
Solves complicated algebraic equations
Two and three dimensional plotting
No limit on numerical precision
WYSIWYG interface available (on version 3.0)
A powerful programming language
A word processor which can also handle
complicated Mathematical expressions
Import/Export data, text, and graphics in standard
formats
Data manipulation - not just numbers
No limit on the complexity of diagrams or
equations
Simple palettes and/or pull down menus for
functions, special characters, and math symbols.
Direct interfaces with Excel and Word (must be
purchased separately)
Standardized ASCII file format to make
Mathematica Notebooks transportable between
platforms.
Standardized ASCII format requires long learning
curve if something happens to your raw data file.
Specialized Reader Program MathReader is
available for free to read Mathematica Files.
Bruce E. Shapiro
Woods Hole, 1998
Page 4
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 5
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 6
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 7
Mathematical Modeling
Company
Conix
3D Explorer
Calculus & Bill Davis, Addison
Wesley
Mathematica
K. D. Stroyan,
Calculus Using
Academic
Press
Mathematica
Wolfram
Control System
Professional
Thomas Cool
Cool Economics Pack
Innova
Derivatives Expert
Wolfram
Electrical Engr.
Examples
Wolfram
Experimental Data
Analyst
Wolfram
Financial Essentials
Wolfram
Fuzzy Logic
Wolfram
Geometrica
Loehle
Global Optimization
Industrial Thermics Visual Analysis
Wolfram
Interactive Calculus
Analytica
InterCall
Joe Gregg
Leibniz
MathTensor
Math Tensor
Wolfram &
Mathematica Labs for
Houghton
Mifflin
Calculus Instruction
Wolfram
Mathlink for MS Excel
Wolfram
Mathlink for MS Word
Wolfram
Mechanical Systems
Bruce E. Shapiro
Woods Hole, 1998
Description
OpenGL Graphics
Undergraduate Calculus Course
Three semester undergraduate
calculus course; includes separate
scientific applications volume.
Comprehensive Simulation
Environment
Econometrics and Statistics
Securities and Financial Analysis
Circuits, Antennas, Transmission
Lines
Data fitting, error analysis,
visualization
Design of Financial Systems
Fuzzy logic systems design
Precise Geometric Design
Nonlinear optimization
Thermal analysis
Learn calculus at your own pace
IMSL & NAG direct access
Alternative Front End
Tensor Analysis
Lab notebooks and text for calculus
instruction.
Put notebooks in Excel documents
Put notebooks in Word documents
Rigid body motion analysis
Page 8
Mathematical Modeling
Company
Macallan
Nodal
Wolfram
Optica
Wolfram
Scientific Astronomer
Wolfram
Signals and Systems
Wolfram
Technical Trader
Tensors in Physics Scandinavian Univ.
Press
Alan Shuchat and
Fred Shultz,
Addison Wesley
Wolfram
Description
Linear Circuit Analysis
Optical systems design & analysis
General Astronomy System
Signal processing
Trading
CARTAN tensor package
Mathematica Tutorial
Techno-Sciences
Techno-Sciences
Dynamical Systems
Wolfram
Source: http://www.wolfram.com
Bruce E. Shapiro
Woods Hole, 1998
Page 9
Mathematical Modeling
Ver.
Hard
Disk
RAM
MB: Rec./Min.
Microsoft Windows
Windows 95
Windows NT 3.51
Front End Only
3.0.1
116/30
16/8
3.0.1
75
16/8
3.0.1
3.0.1
3.0.1
118/30
122/32
75
12/9
12/9
5/5
Linux
3.0.2
125
32/16
Unix SPARC
SunOS 4.1.2
Solaris 2.4
DEC AXP Digital Unix
OSF/1.3.0 or higher
HP PA-RISC HP-UX 10.10
IBM RS/6000 AIX 4.1
Silicon Graphics IRIX 5.3
Front End Only
3.0.2
115
32/16
3.0.2
110
32/16
3.0.2
3.0.2
3.0.2
3.0.2
115
100
115
75
32/16
32/16
32/16
32/16
3.0.2
3.0.2
3.0.2
3.0.2
100
100
100
100
32/16
32/16
32/16
32/16
2.2.3
10
16/8
2.2.3
21
32/16
x86
x86 a.out 1.2
ELF 2.0 or higher
Source: http://www.wolfram.com
Bruce E. Shapiro
Woods Hole, 1998
Page 10
Mathematical Modeling
Platform Indepenent
Ascii Interface
Kernel
Ascii Notebook Files
Bruce E. Shapiro
Woods Hole, 1998
Page 11
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 12
Mathematical Modeling
Using Mathematica
Type 3+3 and then [Shift][Enter]
The kernel will take a while to load.
Things to notice:
The cell brackets
The line indicating the current cell - anything you enter at
the keyboard will go immediately beneath this line.
To create a new cell, move cursor to the end of a cell and
press [Enter] (Windows)
press [Return] (Macintosh)
To evaluate the current cell
press [Shift][Enter] (Windows)
press [Enter] Macintosh
To enter multiple lines within a cell, place cursor within the
cell and press [Return].
Bruce E. Shapiro
Woods Hole, 1998
Page 13
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 14
Mathematical Modeling
Arithmetic
Multiplication
Variable Assignment
Implied Multiplication
Minus
Addition
Subtraction
Power
Bruce E. Shapiro
Woods Hole, 1998
Page 15
Mathematical Modeling
Square Root
ex
Natural Logarithm
loge(x)
logb(x)
Trig Functions
Pi,
Page 16
Mathematical Modeling
Special Constants
First 20 Digits of
Golden Ratio
Page 17
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 18
Mathematical Modeling
Definition of a Function
Bruce E. Shapiro
Woods Hole, 1998
Page 19
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 20
Mathematical Modeling
Loops
Simple Do Loop
Bruce E. Shapiro
Woods Hole, 1998
Page 21
Mathematical Modeling
Local Variables
sum is a Global Variable
Function to
Compute
x,x2, x3
sum is a Local Variable
Function Evaluation
value of sum is unchanged
Function Return
Value is a list of 3
numbers
Bruce E. Shapiro
Woods Hole, 1998
Page 22
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 23
Mathematical Modeling
B.Equation Solving
DSolve[eqn, y, x] solves a differential equation for the function y, with
independent variable x.
FindRoot[lhs==rhs, {x, a}] searches for a numerical solution to the equation
lhs==rhs, starting with x=a.
NDSolve[eqns, y, {x, xmin, xmax}] finds a numerical solution to the ordinary
differential equations eqns for the function y with the independent variable x in the
range xmin to xmax.
NDSolve[eqns, y, {x, xmin, xmax}, {t, tmin, tmax}] finds a numerical
solution to the partial differential equations eqns.
NDSolve[eqns, {y1, y2, ...}, {x, xmin, xmax}] finds numerical solutions for the
functions yi.
NSolve[lhs==rhs, var] gives a list of numerical approximations to the roots of a
polynomial equation.
Solve[eqns, vars] attempts to solve an equation or set of equations for the
variables vars.
Solve[eqns, vars, elims] attempts to solve the equations for vars, eliminating
the variables elims.
imax
Product[f, {i, imax}] evaluates the product i=1 f
Product[f, {i, imin, imax}] starts with i = imin.
Product[f, {i, imin, imax, di}] uses steps di.
Product[f, {i, imin, imax}, {j, jmin, jmax}, ] evaluates the multiple
jmax
imax
product i=imin j= jmin ... f
Bruce E. Shapiro
Woods Hole, 1998
Page 24
Mathematical Modeling
D. Integration
Integrate[f, x] gives the indefinite integral f (x)dx
Integrate[f, {x, xmin, xmax}] gives the definite integral.
Integrate[f, {x, xmin, xmax}, {y, ymin, ymaxa] gives the multiple definite
integral.
NIntegrate[f, {x, xmin, xmax}] gives a numerical approximation to the
integral
InterpolatingFunction[domain, table] represents an approximate
function whose values are found by interpolation.
See also NDSolve (I B. Equation Solving).
E. Optimization
FindMinimum[f, {x, x0}] searches for a local minimum in f, starting from the
point x=x0.
ConstrainedMin[f, {inequalities}, {x, y, }]] finds the global minimum
of f in the domain specified by the inequalities. The variables x, y, are all
assumed to be non-negative.
ConstrainedMax[f, {inequalities}, {x, y, }] finds the global maximum
of f in the domain specified by the inequalities. The variables x, y, are all
assumed to be non-negative.
LinearProgramming[c, m, b] finds the vector x which minimizes the quantity
c.x subject to the constraints m.xb and x 0.
LatticeReduce[{a1, a2, ...}] gives a reduced basis for the set of vectors a.
F. Data Manipulation
1. Curve Fitting
Fit[data, funs, vars] finds a least-squares fit to a list of data as a linear
combination of the functions funs of variables vars.
Interpolation[data] constructs an InterpolatingFunction object
which represents an approximate function that interpolates the data.
ListInterpolation[array] constructs an InterpolatingFunction
object which represents an approximate function that interpolates the array of
values given.
ListInterpolation[array, {{xmin, xmax}, {ymin, ymax}, }]
specifies the domain of the grid from which the values in array are assumed to
come.
Bruce E. Shapiro
Woods Hole, 1998
Page 25
Mathematical Modeling
2. Fourier Transform
Fourier[list] finds the discrete Fourier transform of a list of complex
numbers.
InverseFourier[list] finds the discrete inverse Fourier transform of a list
of complex numbers.
4. Set Manipulation
Union[l1, l2, ] gives a sorted list of all the distinct elements that
appear in any of the li.
Union[list] gives a sorted version of a list, in which all duplicated elements
have been dropped.
Intersection[list1, list2, ] gives a sorted list of the elements common
to all the listi.
Complement[eall, list1, list2, ] gives the elements in eall which are not
in any of the listi
Bruce E. Shapiro
Woods Hole, 1998
Page 26
Mathematical Modeling
3. Matrix Decompositions
SingularValues[m] gives the singular value decomposition for a
numerical matrix m. The result is a list au, w, va, where w is the list of singular
values, and m can be written as
Conjugate[Transpose[u]].DiagonalMatrix[w].v.
PseudoInverse[m] finds the pseudoinverse of a rectangular matrix.
QRDecomposition[m] yields the QR decomposition for a numerical matrix
m. The result is a list aq, ra, where q is an orthogonal matrix and r is an upper
triangular matrix.
SchurDecomposition[m] yields the Schur decomposition for a numerical
matrix m. The result is a list aq, ta where q is an orthogonal matrix and t is a
block upper triangular matrix.
Bruce E. Shapiro
Woods Hole, 1998
Page 27
Mathematical Modeling
H. Complex Numbers
I represents the imaginary unit i.
Complex is the head used for complex numbers.
Re[z] gives the real part of the complex number z.
Im[z] gives the imaginary part of the complex number z.
Abs[z] gives the absolute value of the real or complex number z.
Arg[z] gives the argument of the complex number z.
Conjugate[z] gives the complex conjugate a of the complex number z.
I. Number Representation
1. Heads (Beginning of the List)
Integer is the head used for integers.
Rational is the head used for rational numbers.
Real is the head used for real (floating-point) numbers.
Complex is the head used for complex numbers.
Root[f, k] represents the ka root of the polynomial equation f[x] == 0.
Page 28
Mathematical Modeling
3. Change of Representation
Rationalize[x] takes Real numbers in x that are close to rationals, and
converts them to exact Rational numbers.
Rationalize[x, dx] performs the conversion whenever the error made is
smaller in magnitude than dx.
IntegerPart[x] gives the integer part of x.
Chop[expr] replaces approximate real numbers in expr that are close to zero
by the exact integer 0.
Chop[expr, delta] replaces numbers smaller in absolute magnitude than delta
by 0.
4. Infinity
Infinity or is a symbol that represents a positive infinite quantity.
Indeterminate is a symbol that represents a numerical quantity whose
magnitude cannot be determined.
ComplexInfinity represents a quantity with infinite magnitude, but
undetermined complex phase.
DirectedInfinity[ ] represents an infinite numerical quantity whose
direction in the complex plane is unknown.
DirectedInfinity[z] represents an infinite numerical quantity that is a
positive real multiple of the complex number z.
J. Numerical Precision.
1. Evaluation Accuracy and Precision
N (see IA, Numerical Evaluation).
Accuracy[x] gives the number of digits to the right of the decimal point in
the number x.
Precision[x] gives the number of digits of precision in the number x.
SetAccuracy[expr, n] yields a version of expr in which all numbers have
been set to have an accuracy of n digits.
SetPrecision[expr, n] yields a version of expr in which all numbers have
been set to have a precision of n digits.
$MaxPrecision gives the maximum number of digits of precision to be
allowed in arbitrary-precision numbers.
$MinPrecision gives the minimum number of digits of precision to be
allowed in arbitrary-precision numbers.
$MaxExtraPrecision gives the maximum number of extra digits of
precision to be used in functions such as N.
2. Intervals
Interval[{min, max}] represents the range of values between min and
max. Interval[{min1, max1}, {min2, max2},... ] represents the union of the
ranges {min1, max1}, {min2, max2}, ...
Bruce E. Shapiro
Woods Hole, 1998
Page 29
Mathematical Modeling
K. Options
Compiled is an option for various numerical and plotting functions which
specifies whether the expressions they work with should automatically be compiled.
AccuracyGoal is an option for various numerical operations (e.g. NIntegrate,
NDSolve and FindRoot) which specifies how many digits of accuracy should be
sought in the final result.
PrecisionGoal is an option for various numerical operations (e.g.
NIntegrate and NDSolve) which specifies how many digits of precision
should be sought in the final result.
WorkingPrecision is an option for various numerical operations (e.g.
NIntegrate and FindRoot) which specifies how many digits of precision
should be maintained in internal computations.
Bruce E. Shapiro
Woods Hole, 1998
Page 30
Mathematical Modeling
B. Formula Manipulation
1. Simplification
Simplify (see Above, IIA, Basic Algebra)
FullSimplify[expr] tries a wide range of transformations on expr
involving elementary and special functions, and returns the simplest form it
finds.
2. Expansion
PowerExpand[expr] expands all powers of products and powers.
ComplexExpand[expr] expands expr assuming that all variables are real.
ComplexExpand[expr, {x1, x2, ..}] expands expr assuming that variables
matching any of the xi are complex.
FunctionExpand[expr] tries to expand out special functions in expr, when
possible reducing compound arguments to simpler ones.
3. Rearrangement
Collect[expr, x] collects together terms involving the same powers of
objects matching x.
Collect[expr, {x1, x2, ...}] collects together terms that involve the same
powers of objects matching x1, x2, .
Collect[expr, var, h] applies h to the expression that forms the coefficient
of each term obtained.
Together[expr] puts terms in a sum over a common denominator, and
cancels factors in the result.
Apart[expr] rewrites a rational expression as a sum of terms with minimal
denominators.
Apart[expr, var] treats all variables other than var as constants.
Cancel[expr] cancels out common factors in the numerator and denominator
of expr.
ExpandAll[expr] expands out all products and integer powers in any part of
expr.
ExpandAll[expr, patt] avoids expanding parts of expr that do not contain
terms matching the pattern patt.
FactorTerms[poly] pulls out any overall numerical factor in poly.
Bruce E. Shapiro
Woods Hole, 1998
Page 31
Mathematical Modeling
FactorTerms[poly, x] pulls out any overall factor in poly that does not
depend on x.
FactorTerms[poly, {x1, x2, ...}] pulls out any overall factor in poly that
does not depend on any of the xi.
Bruce E. Shapiro
Woods Hole, 1998
Page 32
Mathematical Modeling
C. Equation Solving
lhs == rhs returns True if lhs and rhs are identical.
DSolve[eqn, y, x] solves a differential equation for the function y, with
independent variable x.
DSolve[{eq1, eq1, ...}, {y1, y2, ...}, x] solves a list of differential equations.
DSolve[eqn, y, {x1, x2, ...}] solves a partial differential
equation.
Eliminate[eqns, vars] eliminates variables between a set of simultaneous
equations.
InverseFunction[f] represents the inverse of the function f, defined so that
InverseFunction[f][y] gives the value of x for which f[x] is equal to y.
LogicalExpand[expr] expands out expressions containing logical connectives
such as && and ||.
Reduce[eqns, vars] simplifies the equations eqns, attempting to solve for the
variables vars. The equations generated by Reduce are equivalent to eqns, and
contain all the possible solutions.
Reduce[eqns, vars, elims] simplifies the equations, trying to eliminate the
variables elims.
Root[f, k] represents the ka root of the polynomial equation f[x] == 0.
Solve[eqns, vars] attempts to solve an equation or set of equations for the
variables vars.
Solve[eqns, vars, elims] attempts to solve the equations for vars, eliminating
the variables elims.
SolveAlways[eqns, vars] gives the values of parameters that make the
equations eqns valid for all values of the variables vars.
D. Calculus
1. Derivatives
D[f, x] gives the partial derivative
Bruce E. Shapiro
Woods Hole, 1998
Page 33
Mathematical Modeling
Page 34
Mathematical Modeling
4. Polynomial Manipulation
(a) Existence
PolynomialQ[expr, var] yields True if expr is a polynomial in var,
and yields False otherwise.
PolynomialQ[expr, {v1, v2, ...}] tests whether expr is a polynomial in
the vi.
Page 35
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 36
Mathematical Modeling
C. Numerical Functions
Abs[z] gives the absolute value of the real or complex number z.
Sign[x] gives -1, 0 or 1 depending on whether x is negative, zero, or positive.
Round[x] gives the integer closest to x.
IntegerPart[x] gives the integer part of x.
Chop[expr] replaces approximate real numbers in expr that are close to zero by the
exact integer 0.
Mod[m, n] gives the remainder on division of m by n.
Quotient[n, m] gives the integer quotient of n and m.
GCD[n1, n2, ] gives the greatest common divisor of the integers ni.
LCM[n1, n2, ] gives the least common multiple of the integers ni
PrimePi[x] gives the number of primes less than or equal to x..
PowerMod[a, b, n] gives ab mod n
Divisors[n] gives a list of the integers that divide n.
Max, Min : See I.F.3. Data Manipulation
Bruce E. Shapiro
Woods Hole, 1998
Page 37
Mathematical Modeling
D. Random Numbers
Random[ ] gives a uniformly distributed pseudorandom Real in the range 0 to 1.
Random[type, range] gives a pseudorandom number of the specified type, lying
in the specified range. Possible types are: Integer, Real and Complex. The
default range is 0 to 1. You can give the range {min, max} explicitly; a range
specification of max is equivalent to {0, max}. Random uses the Wolfram rule 30
cellular automaton generator for integers. It uses a Marsaglia-Zaman subtract-withborrow generator for real numbers.
SeedRandom[n] resets the pseudorandom number generator, using the integer n
as a seed.
SeedRandom[ ] resets the generator, using as a seed the time of day.
E. Elementary Functions
Log[z] gives the natural logarithm of z (logarithm to base a).
Log[b, z] gives the logarithm to base b.
Exp[z] is the exponential function.
Power[x, y] or x^y gives x to the power y.
Sqrt[z] gives the square root of z.
Sin[z], Cos[z], Tan[z], Csc[z], Sec[z], Cot[z]
ArcSin[z], ArcCos[x],ArcTan[z], ArcTan[y,x] = tan-1 (y/x),
ArcCsc[z], ArcSec[z], ArcCot[z]
Sinh[z], Cosh[z], Tanh[z], Sech[z], Csch[z], Coth[z]
ArcSinh[z], ArcCosh[z], ArcTanh[z], ArcSech[z],
ArcCsch[z], ArcCoth[z]
F. Factorial-Based Functions
n! gives the factorial of n. = n(n-1)(n-2)...1
n!! gives the double factorial of n. = n(n-2)(n-4)(n-6)...l
n
Binomial[n, m] gives the binomial coefficient =n!/(n!(n-m)!)
m
Multinomial[n1, n2, ] gives the multinomial coefficient
(n1+n2+..)!/(n1!n2!...)
Pochhammer[a, n] gives the Pochhammer symbol (a)n
Gamma[z] is the Euler gamma function [z]
Gamma[a, z] is the incomplete gamma function [a, z]
Bruce E. Shapiro
Woods Hole, 1998
Page 38
Mathematical Modeling
G. Combinatorial Functions
BernoulliB[n] gives the Bernoulli number Bn .
BernoulliB[n, x] gives the Bernoulli polynomial Bn (x)
ClebschGordan[...] gives the Clebsch-Gordan coefficient from Quantum
Mechanics
EulerE[n, x] gives the Euler polynomial En (x)
Fibonacci[n] gives the Fibonacci number Fn .
Fibonacci[n, x] gives the Fibonacci polynomial Fn (x)
PartitionsP[n] gives the number a of unrestricted partitions of the integer a.
PartitionsQ[n] gives the number a of partitions of the integer a into distinct
parts.
SixJSymbol[...] gives the values of the Racah 6-j symbol from Quantum
Mechanics
Signature[list] gives the signature of the permutation needed to place the
elements of list in canonical order.
StirlingS1[n, m] gives the Stirling number of the first kind Sn( m )
StirlingS2[n, m] gives the Stirling number of the second kind
ThreeJSymbol[...] gives the values of the Wigner 3-j symbol from Quantum
Mechanics
Bruce E. Shapiro
Woods Hole, 1998
Page 39
Mathematical Modeling
I. Zeta Function
LerchPhi[z, s, a] gives the Lerch transcendent (z,s,a)
PolyLog[n, z] gives the polylogarithm function Lin (z)
RiemannSiegelTheta[t] gives the Riemann-Siegel function (t)
RiemannSiegelZ[t] gives the Riemann-Siegel function Z[t]
StieltjesGamma[n] gives the Stieltjes constant n
Zeta[s] gives the Riemann zeta function (s).
Zeta[s, a] gives the generalized Riemann zeta function (s,a).
Bruce E. Shapiro
Woods Hole, 1998
Page 40
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 41
Mathematical Modeling
MeijerG[{{a1 ,...,an },{an+1,...,ap }},{{b1 ,...,bm },{bm+1 ,...,bq }}, z] is the Meijer G
a1 ,K,a p
function Gpqmn z
b1 ,K,bq
LogIntegral[z] is the logarithmic integral function Li(z)
SinIntegral[z] gives the sine integral function Si(z)
SinhIntegral[z] gives the hyperbolic sine integral function Shi(z)
K. Orthogonal Polynomials
ChebyshevT[n, x] gives the Chebyshev polynomial of the first kind Tn (x)
ChebyshevU[n, x] gives the Chebyshev polynomial of the second kind Un (x)
GegenbauerC[n, m, x] gives the Gegenbauer polynomial Cn( m) (x)
GegenbauerC[n, x] gives the renormalized form Cn( m) (x) /m
HermiteH[n, x] gives the Hermite polynomial Hn (x)
LaguerreL[n, x] gives the Laguerre polynomial Ln (x)
LaguerreL[n, a, x] gives the generalized Laguerre polynomial Ln a(x)
JacobiP[n, a, b, x] gives the Jacobi polynomial Pn( a, b) (x)
LegendreP[n, x] gives the Legendre polynomial Pn (x)
LegendreP[n, m, x] gives the associated Legendre polynomial Pnm (x)
SphericalHarmonicY[l, m, q, f] gives the spherical harmonic Yl m ( , )
L. Elliptic Functions
DedekindEta[t] gives the Dedekind eta modular elliptic function ( )
EllipticExp[u, aa, ba] is the inverse for EllipticLog.
EllipticTheta[a, u, q] gives the theta function a(u,q)
EllipticThetaPrime[a, u, q] gives the derivative with respect to a of the
theta function
InverseEllipticNomeQ[q] gives the parameter m corresponding to the nome
q in an elliptic function.
InverseJacobiSN[v, m], InverseJacobiCN[v, m], etc. give the inverse
Jacobi elliptic functions. There are a total of twelve functions, with names of the
form InverseJacobiPQ, where P and Q can be any distinct pair of the letters S,
C, D and N.
JacobiAmplitude[u, m] gives the amplitude am(u|m) for Jacobi elliptic
functions.
KleinInvariantJ[t] gives the Klein invariant modular elliptic function J()
Bruce E. Shapiro
Woods Hole, 1998
Page 42
Mathematical Modeling
M. Elliptic Integrals
EllipticE[m] gives the complete elliptic integral E(m)
EllipticE[f, m] gives the elliptic integral of the second kind E(,m)
EllipticF[f, m] gives the elliptic integral of the first kind F(|m)
EllipticK[m] gives the complete elliptic integral of the first kind K(m)
EllipticLog[{x, y},{a, b} ] gives the generalized logarithm associated with the
elliptic curve y2=x3 +ax 2 +bx
EllipticNomeQ[m] gives the nome q corresponding to the parameter m in an
elliptic function.
EllipticPi[n, m] gives the complete elliptic integral of the third kind (n|m)
EllipticPi[n, f, m] gives the incomplete elliptic integral (n; |m)
JacobiZeta[f, m] gives the Jacobi zeta function Z(|m)
N. Mathieu Functions
MathieuC[a, q, z] gives the even Mathieu function with characteristic value a
and parameter q.
MathieuS[a, q, z] gives the odd Mathieu function with characteristic value a
and parameter q.
MathieuCPrime[a, q, z] gives the derivative with respect to z of the even
Mathieu function with characteristic value a and parameter q.
MathieuSPrime[a, q, z] gives the derivative with respect to z of the odd
Mathieu function with characteristic value a and parameter q.
Bruce E. Shapiro
Woods Hole, 1998
Page 43
Mathematical Modeling
IV. Lists
A. Construction
{a, b, ...} or List[a, b, ...] is a list of elements.
Array[f, n] generates a list of length n, with elements f[i].
Array[f, {n1 , n2 , ...} ] generates an n1 n2 ... array of nested lists, with
elements f[i1 , i2 , ].
Array[f, dims, origin] generates a list using the specified index origin (default
1).
Array[f, dims, origin, h] uses head h, rather than List, for each level of the
array.
Range[imax] generates the list {1, 2, , imax}.
Range[imin, imax] generates the list {imin, , imax}.
Range[imin, imax, di] uses step di.
Table[expr, {i}] generates a list of i copies of expr.
Table[expr, {i, imax}] generates a list of the values of expr when i runs from 1
to imax.
Table[expr, {i, imin, imax}] starts with i = imin.
Table[expr, {i, imin, imax, di}] uses steps di.
Table[expr, {i, imin, imax}, {j, jmin, jmax}, ] gives a nested list. The
list associated with i is outermost.
B. Element Extraction
expr[[i]] or Part[expr, i] gives the ith part of expr.
expr[[-i]] counts from the end.
expr[[0]] gives the head of expr.
expr[[i, j, ]] or Part[expr, i, j, ] is equivalent to expr[[i]] [[j]]
Page 44
Mathematical Modeling
Cases[expr, pattern, levspec] gives a list of all parts of expr on levels specified
by levspec which match the pattern.
Cases[expr, pattern -> rhs, levspec] gives the values of rhs which match the
pattern. Drop[list, n] gives list with its first n elements dropped.
Drop[list, -n] gives list with its last n elements dropped.
Drop[list, {n}] gives list with its nth element dropped.
Drop[list, {m, n}] gives list with elements m through n dropped.
Extract[expr, list] extracts the part of expr at the position specified by list.
Extract[expr, {list1, list2, ...}] extracts a list of parts of expr.
Extract[expr, , h] extracts parts of expr, wrapping each of them with head h
before evaluation.
First[expr] gives the first element in expr.
Last[expr] gives the last element in expr.
Head[expr] gives the head of expr.
Rest[expr] gives expr with the first element removed.
Select[list, crit] picks out all elements ei of list for which crit[ei] is True.
Select[list, crit, n] picks out the first n elements for which crit[ei] is True.
Take[list, n] gives the first n elements of list.
Take[list, -n] gives the last n elements of list.
Take[list, {m, n}] gives elements m through n of list.
C. List Testing
Count[list, pattern] gives the number of elements in list that match pattern.
Count[expr, pattern, levelspec] gives the total number of subexpressions
matching pattern that appear at the levels in expr specified by levelspec.
Depth[expr] gives the maximum number of indices needed to specify any part of
expr, plus one.
Dimensions[expr] gives a list of the dimensions of expr.
Dimensions[expr, n] gives a list of the dimensions of expr down to level n.
FreeQ[expr, form] yields True if no subexpression in expr matches form, and
yields False otherwise.
FreeQ[expr, form, levelspec] tests only those parts of expr on levels specified
by levelspec.
Length[expr] gives the number of elements in expr.
MatrixQ[expr] gives True if expr is a list of lists that can represent a matrix, and
gives False otherwise.
MatrixQ[expr, test] gives True only if test yields True when applied to each
of the matrix elements in expr.
Bruce E. Shapiro
Woods Hole, 1998
Page 45
Mathematical Modeling
D. List Operations
Append[expr, elem] gives expr with elem appended.
Complement[eall, a, b, ] gives the elements in eall which are not in any of
the a, b, ...
Delete[expr, n] deletes the element at position n in expr. If n is negative, the
position is counted from the end.
DeleteCases[expr, pattern] removes all elements of expr which match pattern.
DeleteCases[expr, pattern, levspec] removes all parts of expr on levels
specified by levspec which match pattern.
Insert[list, elem, n] inserts elem at position n in list. If n is negative, the
position is counted from the end.
Insert[expr, elem, {i,j,...}] inserts elem at position {i, j, } in expr.
Intersection[a,b, ] gives a sorted list of the elements common to all the
lists
Join[a, b, ] concatenates lists together. Join can be used on any set of
expressions that have the same head.
Prepend[expr, elem] gives expr with elem prepended.
ReplacePart[expr, new, n] yields an expression in which the nth part of expr
is replaced by new.
Reverse[expr] reverses the order of the elements in expr.
Sort[list] sorts the elements of list into canonical order.
RotateLeft[expr, n] cycles the elements in expr n positions to the left.
RotateLeft[expr] cycles one position to the left.
RotateRight[expr, n] cycles the elements in expr n positions to the right.
RotateRight[expr] cycles one position to the right.
Bruce E. Shapiro
Woods Hole, 1998
Page 46
Mathematical Modeling
E. Structure Manipulations
Flatten[list] flattens out nested lists.
Flatten[list, n] flattens to level n.
Flatten[list, n, h] flattens subexpressions with head h.
FlattenAt[list, n] flattens out a sublist that appears as the nth element of list. If
n is negative, the position is counted from the end.
Order[a, b] gives 1 if a is before b in canonical order, and -1 if a is after b in
canonical order. It gives 0 if a is identical to b.
OrderedQ[h[a, b, ]] gives True if the a, b, ... are in canonical order, and
False otherwise.
Partition[list, n] partitions list into non-overlapping sublists of length n.
Partition[list, n, d] generates sublists with offset d.
Permutations[list] generates a list of all possible permutations of the elements
in list.
Sequence[a, b, ] represents a sequence of arguments to be spliced
automatically into any function.
Signature[list] gives the signature of the permutation needed to place the
elements of list in canonical order.
Split[list] splits list into sublists consisting of runs of identical elements.
Split[list, test] treats pairs of adjacent elements as identical whenever applying
the function test to them yields True.
Thread[f[args]] "threads" f over any lists that appear in args.
Thread[f[args], h] threads f over any objects with head h that appear in args.
Thread[f[args], h, n] threads f over objects with head h that appear in the first
n args.
Thread[f[args], h, -n] threads over the last n args.
Thread[f[args], h, am, na] threads over arguments m through n.
Bruce E. Shapiro
Woods Hole, 1998
Page 47
Mathematical Modeling
B. Function Plots
Plot[f, {x, xmin, xmax}] generates a plot of f as a function of x from xmin to
xmax.
Plot[{f1 , f2 , ...}, {x, xmin, xmax}] plots several functions fi.
Plot3D[f, {x, xmin, xmax}, {y, ymin, ymax}] generates a three-dimensional
plot of f as a function of x and y.
ContourPlot[f, {x, xmin, xmax}, {y, ymin, ymax}] generates a contour
plot of f as a function of x and y.
DensityPlot[f, {x, xmin, xmax}, {y, ymin, ymax}] makes a density plot of
f as a function of x and y.
C. Parametric Plots
ParametricPlot[{fx, fy}, {t, tmin, tmax} ] produces a
parametric plot with x and y coordinates fx and fy generated as a function of t.
ParametricPlot3D[{fx, fy, fz}, {t, tmin, tmax} ] produces a threedimensional space curve parametrized by a variable t which runs from tmin to tmax.
D. Sound Generation
Play[f, {t, tmin, tmax}] plays a sound whose amplitude is given by f as a
function of time t in seconds between tmin and tmax.
ListPlay[{a, b, c, ...}] plays a sound whose amplitude is given by the sequence
of levels a, b, ....
E. Combinations of Plots
Show[graphics, options] displays two- and three-dimensional graphics, using the
options specified.
Bruce E. Shapiro
Woods Hole, 1998
Page 48
Mathematical Modeling
F. Options.
option -> value sets the option to the desired values. Options are specified in
a list as the last element of the Plot[...] directive.
AspectRatio is an option for Show and related functions which specifies the
ratio of height to width for a plot.
AxesLabel -> None specifies that no labels should be given.
AxesLabel -> label specifies a label for the y axis of a two-dimensional plot, and
the z axis of a three-dimensional plot.
AxesLabel -> {xlabel, ylabel, } specifies labels for different axes
Axes -> True draws all axes.
Axes -> False draws no axes.
Axes -> {False, True} draws a y axis but no x axis in two dimensions.
AxesOrigin -> {x, y} specifies that the axes should cross at the point {x, y}.
AxesOrigin -> Automatic uses an internal algorithm to determine where the
axes should cross
AxesStyle -> style specifies that all axes are to be generated with the specified
graphics directive, or list of graphics directives. AxesStyle -> {{xstyle},
{ystyle}, } specifies that axes should use graphics directives xstyle, . The
styles must be enclosed in lists, perhaps of length one. Styles can be specified
using graphics directives such as Dashing, Hue and Thickness.
The default color of axes is specified by the option DefaultColor.
Epilog is an option for graphics functions which gives a list of graphics primitives
to be rendered after the main part of the graphics is rendered.
Frame is an option for two-dimensional graphics functions which specifies whether
a frame should be drawn around the plot. Frame -> True by default draws a
frame with tick marks. If Ticks -> Automatic, setting Frame -> True
suppresses tick marks on axes.
FrameLabel is an option for two-dimensional graphics functions that specifies
labels to be placed on the edges of a frame around a plot. FrameLabel -> None
specifies that no labels should be given. FrameLabel -> {xmlabel, ymlabel}
specifies labels for the bottom and left-hand edges of the frame.
FrameLabel -> {xmlabel, ymlabel, xplabel, yplabel } specifies labels for each
of the edges of the frame, ordered clockwise starting from the bottom edge.
FrameStyle is an option for two-dimensional graphics functions that specifies
how the edges of a frame should be rendered.
FrameTicks is an option for two-dimensional graphics functions that specifies
tick marks for the edges of a frame. Can be None, Automatica, {xgrid, ygrid}
Bruce E. Shapiro
Woods Hole, 1998
Page 49
Mathematical Modeling
G. Primitives
AbsoluteDashing[{ a,b, }] is a graphics directive which specifies that
lines which follow are to be drawn dashed, with successive segments having
absolute lengths a, b (repeated cyclically).
AbsolutePointSize[d] is a graphics directive which specifies that points
which follow are to be shown if possible as circular regions with absolute diameter
d.
AbsoluteThickness[d] is a graphics directive which specifies that lines which
follow are to be drawn with absolute thickness d.
Circle[{x, y}, r] is a two-dimensional graphics primitive that represents a
circle of radius r centered at the point x, y.
Circle[{x, y},{a, b}] yields an ellipse with semi-axes a and b.
Circle[{x, y}, r, {1 , 2 }] represents a circular arc.
Cuboid[{xmin, ymin, zmin}] is a three-dimensional graphics primitive that
represents a unit cuboid, oriented parallel to the axes.
CMYKColor[cyan, magenta, yellow, black] is a graphics directive which
specifies that graphical objects which follow are to be displayed in the color given.
Cuboid[{xmin, ymin, zmin}, {xmax, ymax, zmax}] specifies a cuboid by
giving the coordinates of opposite corners.
Bruce E. Shapiro
Woods Hole, 1998
Page 50
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 51
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 52
Mathematical Modeling
VI. Programming
A. Assignment
lhs = rhs evaluates rhs and assigns the result to be the value of lhs. From then on,
lhs is replaced by rhs whenever it appears.
lhs := rhs assigns rhs to be the delayed value of lhs. rhs is maintained in an
unevaluated form. When lhs appears, it is replaced by rhs, evaluated afresh each
time.
lhs =. removes any rules defined for lhs.
Clear[a1, a2 ] clears values and definitions for the ai.
x++ increases the value of x by 1, returning the old value of x.
x += dx adds dx to x and returns the new value of x.
x-- decreases the value of x by 1, returning the old value of x.
x -= dx subtracts dx from x and returns the new value of x.
++x increases the value of x by 1, returning the new value of x.
--x decreases the value of x by 1, returning the new value of x.
x *= c multiplies x by c and returns the new value of x.
x /= c divides x by c and returns the new value of x.
AppendTo[s, elem] appends elem to the value of s, and resets s to the result.
PrependTo[s, elem] prepends elem to the value of s, and resets s to the result.
f/: lhs = rhs assigns rhs to be the value of lhs, and associates the assignment with
the symbol f.
f/: lhs := rhs assigns rhs to be the delayed value of lhs, and associates the
assignment with the symbol f.
f/: lhs =. removes any rules defined for lhs, associated with the symbol f.
lhs^=rhs assigns rhs to be the value of lhs, and associates the assignment with
symbols that occur at level one in lhs.
lhs^:=rhs assigns rhs to be the delayed value of lhs, and associates the assignment
with symbols that occur at level one in lhs.
B. Testing
lhs == rhs returns True if lhs and rhs are identical.
lhs != rhs or lhs rhs returns False if lhs and rhs are identical.
lhs === rhs yields True if the expression lhs is identical to rhs, and yields False
otherwise.
Bruce E. Shapiro
Woods Hole, 1998
Page 53
Mathematical Modeling
lhs =!= rhs yields True if the expression lhs is not identical to rhs, and yields
False otherwise.
x < y yields True if x is determined to be less than y.
x > y yields True if x is determined to be greater than y.
x <= y or x y yields True if x is determined to be less than or equal to y.
x >= y or x y yields True if x is determined to be greater than or equal to y.
EvenQ[expr] gives True if expr is an even integer, and False otherwise.
IntegerQ[expr] gives True if expr is an integer, and False otherwise.
MatrixQ[expr] gives True if expr is a list of lists that can represent a matrix, and
gives False otherwise.
MemberQ[list, form] returns True if an element of list matches form, and
False otherwise.
Negative[x] gives True if x is a negative number.
NonNegative[x] gives True if x is a non-negative number.
NonPositive[x] gives True if x is a non-positive number.
NumberQ[expr] gives True if expr is a number, and False otherwise.
NumericQ[expr] gives True if expr is a numeric quantity, and False otherwise.
OddQ[expr] gives True if expr is an odd integer, and False otherwise.
PolynomialQ[expr, var] yields True if expr is a polynomial in var, and yields
False otherwise.
Position[expr, pattern] gives a list of the positions at which objects matching
pattern appear in expr.
Position[expr, pattern, levspec] finds only objects that appear on levels
specified by levspec.
Positive[x] gives True if x is a positive number.
PrimeQ[expr] yields True if expr is a prime number, and yields False
otherwise.
VectorQ[expr] gives True if expr is a list, none of whose elements are
themselves lists, and gives False otherwise.
VectorQ[expr, test] gives True only if test yields True when applied to each
of the elements in expr.
C. Flow of Control
1. Compound Expressions
expression; expression; expression; ... evaluates each expression in turn,
giving the last one as the result.
Bruce E. Shapiro
Woods Hole, 1998
Page 54
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 55
Mathematical Modeling
D. Functions
functionName[arg1_, arg2_, arg3_, ...] := expression;
defines a function with arguments arg1, arg2, arg3. expression may be a
single expression, a compound expression, or a list. The tag _ is not used in the
right hand side of the function defintion when the arguments are being referenced.
The expressions on the right hand side are evaluated sequentially, and the functions
return value is the last expression in the list. If the last expression ends in a
semicolon : then the return value is null.
Map[f, expr] or f /@ expr applies f to each element on the first level in expr.
Apply[f, expr] or f @@ expr replaces the head of expr by f.
Note: Mathematica contains an extensive number of functions which greatly
expand the ability to write functions.
E. Pattern Matching
_ or Blank[ ] is a pattern object that can stand for any Mathematica expression.
__ (two _ characters) or BlankSequence[ ] is a pattern object that can stand for
any sequence of one or more Mathematica Expressions
Bruce E. Shapiro
Woods Hole, 1998
Page 56
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 57
Mathematical Modeling
F. Rules
lhs -> rhs or lhs rhs represents a rule that transforms lhs to rhs.
lhs :> rhs or lhs rhs represents a rule that transforms lhs to rhs, evaluating rhs
only after the rule is used.
Replace[expr, rules] applies a rule or list of rules in an attempt to transform the
entire expression expr.
expr /. rules applies a rule or list of rules in an attempt to transform each subpart
of an expression expr.
expr //. rules repeatedly performs replacements until expr no longer changes.
ReplaceList[expr, rules] attempts to transform the entire expression expr by
applying a rule or list of rules in all possible ways, and returns a list of the results
obtained.
G. Strings
String is the head of a character string "text".
"s1" <> "s2" <> , StringJoin["s1", "s2", ] or
StringJoin[{"s1", "s2", }] yields a string consisting of a concatenation
of the si.
StringLength["string"] gives the number of characters in a string.
StringReverse["string"] reverses the order of the characters in "string".
StringTake["string", n] gives a string containing the first n characters in
"string".
StringTake["string", -n] gives the last n characters in "string".
StringTake["string", {n}] gives the nth character in "string".
StringTake["string", {m,n}] gives characters m through n th characters in
"string".
StringDrop["string", n] gives "string" with its first n characters dropped.
StringDrop["string", -n] gives "string" with its last n characters dropped.
StringDrop["string", {n}] gives "string" with its ntth character dropped
StringDrop["string", {m,n}] gives "string" with characters m through n
dropped
StringReplace[string, {s->sp, s->sp, ...}] replaces the s by sp
in string.
StringPosition[string, substring] finds where substring occurs in
string.
StringMatchQ[String, pattern] returns True if pattern occurs in
string.
string1 == string2 returns True if the strings are identical.
Bruce E. Shapiro
Woods Hole, 1998
Page 58
Mathematical Modeling
References
Abell, Martha L., and James P. Braselton, Mathematica by Example, Revised Edition, AP
Professional, 1994. Mathematica techniques for the beginning user.
Andrew, A.D., G.L. Cain, S. Crum, and T.D. Morley. Calculus Projects Using
Mathematica, Revised Edition. Mc Graw Hill, 1993.
Andrew, A.D., and T.D. Morley. Linear Algebra Projects Using Mathematica. Mc Graw
Hill, 1993.
AP Professional, Mathematica CD-ROM Library, 1996. Multi-platform cd-rom that
contains searchable electronic versions of 5 books: Mathematica by Example, Revised
Edition by M. Abell and J. Braselton; The Mathematica Handbook by M. Abell and J.
Braselton; Differential Equations with Mathematica by M. Abell and J. Braselton;
Mastering Mathematica by J. Gray; and Introduction to Computer Performance
Analyiswith Mathematica by A. Allen.
Bahder, Thomas. B. Mathematica for Scientists and Engineers. Addison Wesley, 1995.
Barker, William H., David A. Smith and Lawrence C. Moore. Mathematica Laboratory
Manual to accompany Calculus: Modeling and Application by David Smith and Lawrence
Moore. Heath, 1996.
Baumann, Gerd. Mathematica in Theoretical Physics: Selected Examples from Classical
Mechanics to Fractals. TELOS, 1996.
Blachman, Nancy, Mathematica: A Practical Approach, Prentice Hall, 1992. General
introduction to Mathematica.
Blachman, Nancy, Mathematica: Quick Reference, Version 2, Addison-Wesley, 1992.
Spiral bound pocket size comprehensive cross reference.
Blachman, Nancy. CalcLabs with Mathematica. Brooks and Cole, 1996.
Braden, Bart , Donald K. Krug, Philip W. McCartney, and Steven Wilkinson. Discovering
Calculus with Mathematica. Wiley, 1992.
Burbullam D.C.M. and C.T.J. Dodson. Self-Tutor for Computer Calculus Using
Mathematica. Prentice Hall, 1992.
Burkhardt, Werner, First Steps in Mathematica, Springer-Verlag, 1994. A step-by-step
introduction to Mathematica for first-time users
Cheung, C. K., G. E. Keough and Tim Murdoch. Exploring Multivariable Calculus with
Mathematica. Wiley, 1996. Laboratory manual to accompany Multivariate Calculus by W.
McCallum, D. Hughes-Hallett and A. Gleason.
Cohen, Jack K. and Frank G. Hagin. Calculus Explorations with Mathematica. Prentice
Hall, 1995. Undergraduate calculus lab manual and diskette.
Bruce E. Shapiro
Woods Hole, 1998
Page 59
Mathematical Modeling
Coombes, Kevin R., Brian R. Hunt, Ronald L. Lipsman, John E. Osborn, and Garrett J.
Stuck Differential Equations with Mathematica. Wiley, 1995.
Crandall, Richard E. Mathematica for the Sciences. Addison Wesley, 1991.
Crooke, Phillip and John Ratcliffe. A Guidebook to Calculus with Mathematica.
Wadsworth, 1991.
Davis, Bill, Horacio Porta, and Jerry Uhl. Calculus & Mathematica. Addison Wesley,
1994. Windows, Mac, NeXT versions.
Ellis, Wade, Jr., and Ed Lodi, A Tutorial Introduction to Mathematica, Brooks/Cole, 1991.
Title speaks for itself.
Ellison, John. Mathematica Notebook for Differential Equations with Computer Lab
Experiments by Dennis G. Zill, PWS Publishing, 1995. Mac or DOS diskette.
Emert, John and Roger Nelson. Calculus & Mathematica. Saunders, 1992.
Feagin, James M. Quantum Methods with Mathematica. TELOS, 1994.
Finch, James K. and Millianne Lehmann. Exploring Calculus with Mathematica. Addison
Wesley, 1992.
Freeman, James A. Simulating Neural Networks with Mathematica. Addison Wesley,
1994.
Ganzha Victor G. and Evgenii V. Vorozhtsov. Numerical Solutions for Partial Differential
Equations: Problem Solving Using Mathematica . CRC Press, 1996.
Green, Edward. Benny Evans, and Jerry Johnson. Exploring Calculus with Mathematca.
Wiley, 1994.
Hibbard, Allen. Calculus Explorations using Mathematica. Saunders, 1996.
Hft, Margret H. Laboratories for Calculus I Using Mathematica. Addison Wesley 1992.
Gaylord, Richard J., Sam N. Kamin and Paul R. Wellin. An Introduciton to Programming
with Mathematica. TELOS/Spring-Verlag, 1996. Programming in Mathematica.
Gaylord, Richard J. and Paul R. Wellin. Computer Simulations with Mathematica:
Explorations in Complex Physical and Biological Systems. TELOS, 1995.
Gloor, Oliver, Beatrice Amrhein and Roman E. Maeder. Illustrated Mathematics:
Visualization of Mathematical Objects with Mathematica. TELOS, 1995. Visualization of
various concepts in college Mathematics at all levels.
Gray, Alfred. Modern Differential Geometry of Curves and Surfaces. CRC Press, 1993.
Gray, John. Mastering Mathematica: Programming Methods and Applications. AP
Professional, 1994. Various programming styles in Mathematica.
Gray, Theodore W., and Jerry Glynn, The Beginner's Guide to Mathematica Version 2,
Addison-Wesley, 1992. Tutorial and reference.
Bruce E. Shapiro
Woods Hole, 1998
Page 60
Mathematical Modeling
Gray, Theodore W. and Jerry Glynn. Exploring Mathematics with Mathematica. Addison
Wesley, 1991.
Johnson, Eugene. Linear Algebra with Mathematica. Brooks and Cole, 1995.
Kaufmann, Stephan, Mathematica as a Tool, Birkhuser, 1994. General introduction to
Mathematica. with emphasis on programming and examples from mechanical and civil
engineering.
Kerckhove, Michael G. and Van C. Nall. Calculus Laboratories with Mathematica (3
Vols.) . McGraw Hill, 1993.
Kernen, V. and P. Mitic, Ed. Mathematics with Vision: Proceedings of the First
International Mathematica Symposium. Computational Mechanics Publications, 1995.
Knoll, Cecilia A., Michael D. Shaw, Jerry Johnston and Benny Evans. Discovering Calculus
with Mathematica. Wiley, 1995.
Kreyszig, E. and E.J. Normington. Mathematica Computer Manual to accompany
Advanced Engineering Mathematics, Seventh Edition. Wiley, 1994.
Maeder, Roman. The Mathematica Programmer. AP Professional, 1994. Mathematica as
an object oriented programming language.
Maeder, Roman. Programming in Mathematica. Third Edition. Addison-Wesley, 1997.
Programming in Version 3.0 of Mathematica.
Olinick, Eli. V. Mathematic Notebook for Calculus, Sixth Edition, by Swokowski, Olinick,
and Pence and for Calculus of a Single Variable, Second Edition by Swokowski,
Olinick, and Pence. PWS Publishing. Mac or DOS diskette.
ONeil, Peter V. Mathematica Lab Manual to accompany Peter V. O'Neil's Advanced
Engineering Mathematics, Fourth Edition. PWS, 1995.
Ostovic, Vlado. Computer Aided Analysis of Electric Machines: A Mathematica Approach.
Prentice Hall, 1994.
Packel, Ed. Mathematica for Mathematics Teachers: Notes from an Introdutory Course.
Front Range Press, 1996.
Packel, Ed and Stan Wagon. Animating Calculus: Mathematica Notebooks for the
Laboratory. Freeman, 1994.
Parker, Leonard and Steven M. Christensen. MathTensor: A System for Doing Tensor
Analysis by Computer. Addison Wesley, 1994.
Pidgeon, Charles, ed. Advanced Tutorials for the Biomedical Sciences: Animations,
Simulations, and Calculations Using Mathematica. VCH, 1996.
Riddle, Alfred, and Samuel Dick. Applied Electronic Engineering with Mathematica.
Addison Wesley, 1994.
Bruce E. Shapiro
Woods Hole, 1998
Page 61
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 62
Mathematical Modeling
Bruce E. Shapiro
Woods Hole, 1998
Page 63