You need to download the file ezcontourc.m.
Example: Find all relative maxima and minima of f(x,y) = x3 - 3x + 3xy2
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