Math 21a, Fall 2007
Mathematica project Math 21a, Multivariable Calculus
Lab
Office: SciCtr 434

 See the Mathematica project gallery.

We had a Mathematica workshop on Wednesday, December 5 in Hall D from 7-8 PM. This is open to all students. 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 assignment If 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.
 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[%] ```