Mathematica Laboratory

The Mathematica Assignment Fall 2017

  • About the Mathematica project
    • Strict deadline: December 2. Midnight. (The email has to have a December 2 time stamp).
    • Submit by email to knill@math.harvard.edu Don't submit by canvas! You will get an individual acknowledgment back by email.
    • Be creative: just ask your self: has anybody seen this already implemented in this language? If the answer is yes, then it is not creative enough. And please, stick to the problem. If the problem asks for a parametric surface, you can not just draw something with polyhedron data.
    • Network around. But each student writes his or her own project and submits an individual project.
    • Give credit for outside sources. It is ok to be inspired by others but acknowledge.
    • During work, save frequently. Save versions. If the interface crashes, and it does if it runs out of memory, your work is gone. Possibly all of it. Remember Murphy's law: everything which can go wrong, will go wrong.
    • Here is the lab authored during the demo. Here is a picture of a Sea Urchin eaten earlier that day in the Oyster House and which inspired the demo.
    There will be a short Mathematica workshop giving more details about the project on Thursday, November 16 at 3 PM in Hall C. The Mathematica project of Fall 2017 is available
    Here
    The lab is of creative nature as in previous years and be posted soon. Here are galleries from previous years:
    Example Summer 2017, Example Summer 2016, Example Fall 2016 Example Fall 2015 Example Fall 2014 Example Fall 2013
    • The Mathematica program can be obtained here. During installation you will be prompted for an Activation Key. Students Faculty/Staff. Make sure to use your Harvard email address when registering. Contact me (knill@math.harvard.edu) if you plan to use Mathematica on a linux system.
    • Mathematica is started like any other application on Macintoshs or PC's. On Linux, just type "mathematica" in a terminal to start the notebook version, or "math" to start the terminal version.
    • Once Mathematica is running, copy paste any of the following lines into a cell, click with the mouse somewhere into the cell, then hold "Shift" and hit "Enter".
    Some frequently used commands:

    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
    SphericalPlot3D[(2+Sin[2 t] Sin[3 s]),{t,0,Pi},{s,0,2 Pi}] Spherical Plot
    RevolutionPlot3D[{2 + Cos[t], t}, {t,0,2 Pi}] Revolution Plot
    ContourPlot[Sin[x y],{x,-2,2},{y,-2,2} ] Contour lines (traces)
    ContourPlot3D[x^2+2y^2-z^2,{x,-2,2},{y,-2,2},{z,-2,2}] Implicit surface
    VectorPlot[{x-y,x+y},{x,-3,3},{y,-3,3}] Vectorfield plot
    VectorPlot3D[{x-y,x+y,z},{x,-3,3},{y,-3,3},{z,0,1}] Vectorfield plot 3D
    Integrate[x Sin[x], x] Integrate symbolically
    Integrate[x y^2-z,{x,0,2},{y,0,x},{z,0,y}] 3D Integral
    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
    DSolve[{D[u[x,t],t]==D[u[x,t],x],u[x,0]==Sin[x]},u[x,t],{x,t}] Solution to PDE
    Classify extrema:
    ClassifyCriticalPoints[f_,{x_,y_}]:=Module[{X,P,H,g,d,S}, X={x,y};
    P=Sort[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} /.P,TableHeadings->{None,{x,y,"D","f_xx","Type","f"}}]]
    ClassifyCriticalPoints[4 x y - x^3 y - x y^3,{x,y}]
    
    Solve a Lagrange problem with 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}]
    
    With 3 variables
    F[x_,y_,z_]:=2x^2+4 x y+z;     G[x_,y_,z_]:=x^2 y + z;   c=1; 
    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]==c},{x,y,z,L}]
    
    With 3 variables and two constraints
    F[x_,y_,z_]:=z;     G[x_,y_,z_]:=z^2-x^2-y^2;  H[x_,y_,z_]:=4x-3y+8z; c=0; d=5; 
    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]==c,
           H[x,y,z]==d},
    {x,y,z,L,M}]
    
    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[%]
    
    Solving a partial differential equation numerically Please use code from here. A partial differential equation (wave equation) with three variables:
    A=Rectangle[{0,0},{1,1}]; Clear[t,x,y];
    f[x_,y_]:=Sin[2 Pi x] Abs[Sin[3 Pi y]];
    g[x_,y_]:=3 Sin[Pi x] Sin[Pi y];
    U=NDSolveValue[{D[u[t,x,y],{t,2}]
     -Inactive[Laplacian][u[t,x,y],{x,y}]==0,
      u[0,x,y] == f[x,y],
      Derivative[1,0,0][u][0,x,y]==g[x,y],
      DirichletCondition[u[t,x,y] ==0,True]},
      u,{t, 0, 2 Pi}, {x,y} \[Element] A];
    Plot3D[U[4,x,y],{x,0,1},{y,0,1}]