Math 21a, Fall 2008
Mathematica project Math 21a, Multivariable Calculus
Lab
Course head: Oliver Knill
Office: SciCtr 434
We have a Mathematica workshop in December 4th from 7-8pm in Hall E. Here is a podcast from Wolfram to get started. Even if you have worked with Mathematica already, you might get something out of this workshop. We will however start from scratch. We will cover:
  • Installation of Mathematica.
  • Getting started with Mathematica, the interface.
  • The assignment, what do we expect?
  • Some tips and tricks to work with Mathematica.
Whether you have Mathematica installed already or not, it is best to bring your laptop, so that we can work try things out simultaneously or solve issues on the spot.

Mathematica You can install Mathematica 6 on your own computer. Get it here.
Installation Start up the application and follow the instructions. Have ready the Harvard Licence number L2482-2405. You will get a Machine ID which will have to be entered into the Mathematica Registration page. In return, you will be sent a password by email. This is what you see during installation in Send email to math21a, if you plan to use Mathematica on a Linux system. I can provide you with the program.
Getting the notebook
Click on the link and save it on your computer.
The mathematica assignmentIf you open the notebook with Mathematica, you will see all the instructions which are needed. The actual assignment is at the end of the notebook. It consists of 5 problems.
A notebook on quadrics
Running mathematica Mathematica is started up like any other application on Macintoshs or PC's. On Linux, just type "mathematica" to start the notebook version, or "math" to start the terminal version.
Some frequently used commands: ( See more what you can do with Mathematica)
Example how to check homework: change the function and get an analysis about its critical points:
 
 (* Mathematica code to classify critical points, O. knill, 2000 *)
 f[x_,y_]:=4 x y - x^3 y - x y^3;
 a[x_,y_]:=D[f[u,v],u] /. {u->x,v->y}; b[x_,y_]:=D[f[u,v],v] /. {u->x,v->y};
 A=Solve[{a[x,y]==0,b[x,y]==0},{x,y}];
 CriticalPoints=Table[{A[[i,1,2]],A[[i,2,2]]},{i,Length[A]}];
 H[{x_,y_}]:={{D[f[u,v],{u,2}],D[D[f[u,v],v],u]},{D[D[f[u,v],u],v],D[f[u,v],{v,2}]}} /. {u->x,v->y};
 F[A_]:=A[[1,1]]; Discriminant=Map[Det,Map[H,CriticalPoints]]
 FirstEntry=Map[F,Map[H,CriticalPoints]]
 Decide[B_]:=If[Det[B]<0,"saddle",If[B[[1,1]]<0,"max","min"]];
 Analysis=Map[Decide, Map[H,CriticalPoints]];
 Table[{CriticalPoints[[i]],Analysis[[i]]},{i,Length[CriticalPoints]}]
Here is a slicker code, doing the same and even presenting it as a nice table (credit: Matt Leingang, 2006)
ClassifyCriticalPoints[f_,{x_,y_}] := Module[{X,P,H,g,d,S},
X={x,y}; P=Solve[Thread[D[f,#] & /@ X==0],X];H=Outer[D[f,#1,#2]&,X,X];g=H[[1,1]];d=Det[H];
S[d_,g_]:=If[d<0,"saddle",If[g>0,"minimum","maximum"]]; 
TableForm[{x,y,d,g,S[d,g],f} /. Sort[P],TableHeadings->{None,{x,y,"D","f_xx","Type","f"}}]]
ClassifyCriticalPoints[4 x y - x^3 y - x y^3,{x,y}]
Here is an example on how to solve a Lagrange problem for functions of 2 variables:
F[x_,y_]:=2x^2+4 x y
G[x_,y_]:=x^2 y
Solve[{D[F[x,y],x]== L*D[G[x,y],x],D[F[x,y],y]==L*D[G[x,y],y],G[x,y]==1},{x,y,L}]
and here an example with functions of 3 variables:
F[x_,y_,z_]:=x^2+y^2+z^2;
G[x_,y_,z_]:=x-y^2+z;
Solve[{D[F[x,y,z],x]== L*D[G[x,y,z],x],
       D[F[x,y,z],y]== L*D[G[x,y,z],y],
       D[F[x,y,z],z]== L*D[G[x,y,z],z],
       G[x,y,z]==1},{x,y,z,L}]
or with two constraints:
F[x_, y_, z_] := x^2 + y^2 + z^2;
G[x_, y_, z_] := x - y^2 + z;
H[x_, y_, z_] := x + y - 2;
Solve[{
  D[F[x, y, z], x] == L*D[G[x, y, z], x] + M*D[H[x, y, z], x],
  D[F[x, y, z], y] == L*D[G[x, y, z], y] + M*D[H[x, y, z], y],
  D[F[x, y, z], z] == L*D[G[x, y, z], z] + M*D[H[x, y, z], z],
  G[x, y, z] == 1, H[x, y, z] == 1}, {x, y, z, L, M}]
Here is an example how to check that a function solves a PDE:
f[t_,x_]:=(x/t)*Sqrt[1/t]*Exp[-x^2/(4 t)]/(1+ Sqrt[1/t] Exp[-x^2/(4 t)]);
D[f[t,x],t]+f[t,x]*D[f[t,x],x]-D[f[t,x],{x,2}]
Simplify[%] Chop[%]


Plot[ x Sin[x],{x,-10,10}] Graph function of one variable
Plot3D[ Sin[x y],{x,-2,2},{y,-2,2}] Graph function of two variables
ParametricPlot[ {Cos[3 t],Sin[5 t]} ,{t,0,2Pi}] Plot planar curve
ParametricPlot3D[ {Cos[t],Sin[t],t} ,{t,0,4Pi},AspectRatio->1] Plot space curve
ParametricPlot3D[ {Cos[t] Sin[s],Sin[t] Sin[s],Cos[s]},{t,0,2Pi},{s,0,Pi}] Parametric Surface
ContourPlot[ Sin[x y],{x,-2,2},{y,-2,2} ] Contour lines (traces)
Integrate[ x Sin[x], x] Integrate symbolically
NIntegrate[ Exp[-x^2],{x,0,10}] Integrate numerically
D[ Cos^5[x],x ] Differentiate symbolically
Series[Exp[x],{x,0,3} ] Taylor series
DSolve[ x''[t]==-x[t],x,t ] Solution to ODE
Get["Graphics`ContourPlot3D`"];
ContourPlot3D[x^2+2y^2-z^2-1,{x,-2,2},{y,-2,2},{z,-2,2}]
Implicit surface
Get["Calculus`VectorAnalysis`"]
SetCoordinates[Cartesian[x, y, z]]
Curl[{x y,x z, y z}]
Div[{x y,x z,y z}]
Grad[x y z]


Questions and comments to knill@math.harvard.edu
Math21b | Math 21a | Fall 2008 | Department of Mathematics | Faculty of Art and Sciences | Harvard University