Here is a matlab script %%%%%%%%%%%%%%%%%%%%%%% p1 = [0 0]; p2 = [2.6442 1.8984]; p3 = [.8567 .6468]; gradp1 = gradd(p1) gradp2 = gradd(p2) gradp3 = gradd(p3) Hessp1 = eigsH(p1) Hessp2 = eigsH(p2) Hessp3 = eigsH(p3) function Y = gradd(X) Y(1) = 20 * X(1)* X(2) - 10* X(1) - 4*X(1)^3; Y(2) = 10 * X(1)^2 - 8*X(2) - 8*X(2)^3; end function Z = eigsH(X) W = zeros(2,2); W(1,1) = 20 * X(2) - 10 -12*X(1)^2; W(1,2) = 20 * X(1); W(2,1) = W(1,2); W(2,2) = -8 - 24 * X(2)^2; Z = eigs(W); end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% And the output from running it %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% gradp1 = 0 0 gradp2 = 0.0022 -0.0028 gradp3 = 1.0e-03 * 0.2231 0.2374 Hessp1 = -10 -8 Hessp2 = -131.5028 -18.9249 Hessp3 = -30.1381 6.2265 %%%%%%%%%%%%%%%%%%%%%%%%%% so p1 and p2 are local maxes and p3 is a saddle.