2.5 Classification of critical points

# 
# 
#                                              WORKSHEET#16
# 
#                                     Classification of critical points
# 
# 
--------------------------------------------------------------------------------
# In this worksheet we continue the study of the critical points of the the function f(x,y) 
# from worksheet#15.  This is done through the hessian matrix. 
--------------------------------------------------------------------------------
> f:=(x,y)->sin(y-x^2-1)+cos(2*y^2-x);

                                         2               2
                  f := (x,y) -> sin(y - x  - 1) + cos(2 y  - x)
--------------------------------------------------------------------------------
> f1:=D[1](f);f2:=D[2](f);

                                          2                   2
            f1 := (x,y) -> - 2 cos(- y + x  + 1) x - sin(- 2 y  + x)

                                       2                   2
             f2 := (x,y) -> cos(- y + x  + 1) + 4 sin(- 2 y  + x) y
--------------------------------------------------------------------------------
> with(linalg);
Warning: new definition for   norm
Warning: new definition for   trace


[BlockDiagonal, GramSchmidt, JordanBlock, Wronskian, add, addcol, addrow, adj,

    adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix,

    charmat, charpoly, col, coldim, colspace, colspan, companion, concat, cond,

    copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge,

    dotprod, eigenvals, eigenvects, entermatrix, equal, exponential, extend,

    ffgausselim, fibonacci, frobenius, gausselim, gaussjord, genmatrix, grad,

    hadamard, hermite, hessian, hilbert, htranspose, ihermite, indexfunc,

    innerprod, intbasis, inverse, ismith, iszero, jacobian, jordan, kernel,

    laplacian, leastsqrs, linsolve, matrix, minor, minpoly, mulcol, mulrow,

    multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential,

    randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan,

    rref, scalarmul, singularvals, smith, stack, submatrix, subvector,

    sumbasis, swapcol, swaprow, sylvester, toeplitz, trace, transpose,

    vandermonde, vecpotent, vectdim, vector]
--------------------------------------------------------------------------------
> ?hessian;
--------------------------------------------------------------------------------
> H:=hessian(f(x,y),[x,y]);

     H :=               2       2                2                 2
          [4 sin(- y + x  + 1) x  - 2 cos(- y + x  + 1) - cos(- 2 y  + x),

                             2                     2
              - 2 sin(- y + x  + 1) x + 4 cos(- 2 y  + x) y]

                          2                     2
          [- 2 sin(- y + x  + 1) x + 4 cos(- 2 y  + x) y,

                         2                    2       2              2
              sin(- y + x  + 1) - 16 cos(- 2 y  + x) y  + 4 sin(- 2 y  + x)]
--------------------------------------------------------------------------------
# Note that this matrix is symmetric.  A critical point will be a local mimimum if all the 
# eigenvalues of the hessian, when evaluated at the critical point, are positive and a local 
# maximum if they are all negative.  If all eigenvalues at the critical point are non-zero,but 
# some are negative and some are positive, then the critical point is a saddle point.  This 
# works for all dimensions. 
--------------------------------------------------------------------------------
> ?eigenvalues
--------------------------------------------------------------------------------
> fsolve ({f1(x,y),f2(x,y)},{x,y},{x=0.36..0.38,y=-0.44..-0.42});

                       {x = .3728572391, y = -.4317738060}
--------------------------------------------------------------------------------
> assign(");
--------------------------------------------------------------------------------
> print(x,y,f1(x,y),f2(x,y),f(x,y));

                                                -10                 -9
        .3728572391, -.4317738060, .529485605*10   , -.3778129031*10  , 0
--------------------------------------------------------------------------------
> print(H(x,y));

                                            2
          [4 %2 x(.3728572391, -.4317738060)

                              2
               - 2 cos(- y + x  + 1)(.3728572391, -.4317738060) - %1,

               - .7457144782 %2 - 1.727095224 %1]

                                                                              2
  [ - .7457144782 %2 - 1.727095224 %1, %2 - 16 %1 y(.3728572391, -.4317738060)

                    2
       + 4 sin(- 2 y  + x)(.3728572391, -.4317738060)]

                           2
%1 :=             cos(- 2 y  + x)(.3728572391, -.4317738060)

                            2
%2 :=            sin(- y + x  + 1)(.3728572391, -.4317738060)
--------------------------------------------------------------------------------
# 
> x;y;

                                   .3728572391

                                  -.4317738060
--------------------------------------------------------------------------------
# Thus even though x and y have been assigned values H has not.  H is a 2 by 2 matrix 
# whose entries are H[1,1], H[1,2], etc.  The entries have been assigned values. 
--------------------------------------------------------------------------------
> H[1,1];

                                  -.4439099168
--------------------------------------------------------------------------------
> ?matrix
--------------------------------------------------------------------------------
> A:=matrix(2,2,[H[1,1],H[1,2],H[2,1],H[2,2]]);

                            [ -.4439099168  -2.472809702 ]
                       A := [                            ]
                            [ -2.472809702  -1.982857912 ]
--------------------------------------------------------------------------------
> eigenvals(A);

                            -3.803148007, 1.376380179
--------------------------------------------------------------------------------
# Thus this crirical point is a saddle point, that is the in some directions near the critical 
# point the function is increasing and in others it is decreasing.  We'll try one more critical 
# point.
--------------------------------------------------------------------------------
> x:='x':y:='y':
> fsolve({f1(x,y),f2(x,y)},{x,y},{x=-1.4..-1.0,y=0.8..1.2});

                       {y = .9743122425, x = -1.243023962}
--------------------------------------------------------------------------------
> assign(");
--------------------------------------------------------------------------------
> print(x,y,f1(x,y),f2(x,y),f(x,y));

                                                 -8               -9
       -1.243023962, .9743122425, -.3406151520*10  , .393574498*10  , -2.
--------------------------------------------------------------------------------
> A:=matrix(2,2,[H[1,1],H[1,2],H[2,1],H[2,2]]);

                            [  7.180434282  -1.411201046 ]
                       A := [                            ]
                            [ -1.411201046   16.18854953 ]
--------------------------------------------------------------------------------
> eigenvals(");

                            6.964531797, 16.40445202
--------------------------------------------------------------------------------
# Both eigenvalues are positive so this is a local minimum.  Actually this is a global 
# minimum.  To see this note that the value of f(x,y) is -2 and then just recall the definition 
# of f(x,y).