Maxima for maxima (and minima) of functions z=f(x,y)

 

surfacecontours

Together with the 3D graphing capabilities of Maxima, we can bring  symbolic differentiation and the numerical solver to bear when we seek local extrema of a surface.

Here is a link to the html export of a wxMaxima session where I work on two examples from my multivariable calculus class.  And here is the wxMaxima session.

The MATH214 package for multivariable calculus

I’ve written a suite of Maxima commands for use in multivariable calculus class.  The package includes:

cross, dot, len, 
unitT, unitN, unitB, curvature, 
integrate2, integrate3,
integratePaths, integratePathv2, integratePathv3, 
integrateSurf,
grad, div, curl

To use these commands:

  1. download MATH214.zip
  2. extract (unzip) the contents into a directory you can find later. (I think macOS does this step behind the scenes, but in windows you’ll need right-click and “Extract All…”)
  3. In wxMaxima, select File—Load Package…  then navigate to the directory in step 2. above and select MATH214.mac   The result should be an automatically generated input line similar to:loadpackageline

Included in that package is my home-baked help utility.  After loading, help(MATH214) returns a list of functions in the package, and help(<function_name>) returns a description and usage example for any of the functions named in the list above.

Examples showing these commands being executed in wxMaxima can be found here.  In addition, the .zip file also contains these examples in the  wxMaxima session file math214_testfunctions.wxmx that you can load into your wxMaxima session.

It is only necessary to download and extract MATH214.zip once, but you will need to load the package (step 3 above) in each new wxMaxima session you’d like to use any of these commands.

Note that these commands duplicate existing Maxima functionality (like dot(x,y) and x.y) or perform similarly to other packages (like vect).  The purpose here is for the commands in MATH214 to have a calling syntax that closely follows the way we have defined these operations analytically in class, while avoiding the unfortunate namespace  conflicts between the existing packages vect and draw that has been recently documented.