The NLP Procedure

HESSIAN Statement

HESSIAN variables ;

The HESSIAN statement defines the Hessian matrix $ G$ containing the second-order derivatives of the objective function $ f$ with respect to $ x_1,\ldots ,x_ n$. For more information, see the section Derivatives.

If the DIAHES option is not specified, the HESSIAN statement lists $ n(n+1)/2$ variable names which correspond to the elements $ G_{j,k}, \  j \geq k,$ of the lower triangle of the symmetric Hessian matrix listed by rows. For example, the statements

      min f;
      decvar x1 - x3;
      hessian g1-g6;

correspond to the Hessian matrix

\[  G = \left[ \begin{array}{ccc} G1 &  G2 &  G4 \\ G2 &  G3 &  G5 \\ G4 &  G5 &  G6 \\ \end{array} \right] = \left[ \begin{array}{ccc} \partial ^2 f / \partial x^2_1 &  \partial ^2 f / \partial x_1 \partial x_2 &  \partial ^2 f / \partial x_1 \partial x_3 \\ \partial ^2 f / \partial x_2 \partial x_1 &  \partial ^2 f / \partial x^2_2 &  \partial ^2 f / \partial x_2 \partial x_3 \\ \partial ^2 f / \partial x_3 \partial x_1 &  \partial ^2 f / \partial x_3 \partial x_2 &  \partial ^2 f / \partial x^2_3 \end{array} \right]  \]

If the DIAHES option is specified, only the $ n$ diagonal elements must be listed in the HESSIAN statement. The $ n$ rows and $ n$ columns of the Hessian matrix $ G$ must correspond to the order of the $ n$ parameter names listed in the DECVAR statement. To specify the values of nonzero derivatives, the variables specified in the HESSIAN statement must be defined on the left-hand side of algebraic expressions in the programming statements. For example, consider the Rosenbrock function:

proc nlp tech=nrridg;
   min f;
   decvar x1 x2;
   gradient g1 g2;
   hessian h1-h3;
   
   f1 = 10 * (x2 - x1 * x1);
   f2 = 1 - x1;
   
   f = .5 * (f1 * f1 + f2 * f2);
   
   g1 = -200 * x1 * (x2 - x1 * x1) - (1 - x1);
   g2 = 100 * (x2 - x1 * x1);
   
   h1 = -200 * (x2 - 3 * x1 * x1) + 1;
   h2 = -200 * x1;
   h3 = 100;
run;