You need to download the file `ezcontourc.m`

.

**Example:** Find all relative maxima and minima of
*f*(*x*,*y*) = *x*^{3} - 3*x* + 3*xy*^{2}

Define the symbolic variables and `f`

syms x y f = x^3 - 3*x + 3*x*y^2

Find the partial derivatives

fx = diff(f,x) fy = diff(f,y)

Find critical points (`xc,yc)`

by solving `fx`

=0 and
`fy`

=0 for `x`

and `y`

`[xc,yc] = solve(fx,fy,x,y); [xc,yc]`

Matlab finds 4 solutions. The first solution is
`xc(1),yc(1)`

,..., the 4th solution is `xc(4),yc(4)`

.

Find the second partials and the discriminant `D`

fxx = diff(fx,x); fxy = diff(fx,y); fyy = diff(fy,y) D = fxx*fyy - fxy^2

Evaluate `D`

at the first critical point by substituting
for `x`

and `y`

the values `xc(1)`

and
`yc(1)`

subs(D,{x,y},{xc(1),yc(1)}) subs(fxx,{x,y},{xc(1),yc(1)})

Note that we have `D`

> 0 and `fxx`

> 0, hence
this is a relative minimum.

We can similarly check the other three critical points and find that two of them are saddle points and one is relative maximum.

Plot the function as a surface and as contours (with 51 contours)

Can you see the relative maximum, relative minimum and the two saddle points in the contour plot?figure(1); ezsurf(f,[-1.5,1.5,-1.5,1.5]); figure(2); ezcontourc(f,[-1.5,1.5,-1.5,1.5],51); axis equal; axis tight