The NLP Procedure

CRPJAC Statement

CRPJAC variables ;

The CRPJAC statement defines the crossproduct Jacobian matrix $ J^ TJ$ used in solving least squares problems. For more information, see the section Derivatives. If the DIAHES option is not specified, the CRPJAC statement lists $ n(n+1)/2$ variable names, which correspond to the elements $(J^ T J)_{j,k},\  j \geq k$ of the lower triangle of the symmetric crossproduct Jacobian matrix listed by rows. For example, the statements

   lsq f1-f3;
   decvar x1-x3;
   crpjac jj1-jj6;

correspond to the crossproduct Jacobian matrix

\[  J^ TJ = \left[ \begin{array}{ccc} JJ1 &  JJ2 &  JJ4 \\ JJ2 &  JJ3 &  JJ5 \\ JJ4 &  JJ5 &  JJ6 \\ \end{array} \right]  \]

If the DIAHES option is specified, only the $ n$ diagonal elements must be listed in the CRPJAC statement. The $ n$ rows and $ n$ columns of the crossproduct Jacobian matrix must be in the same order as the $ n$ corresponding parameter names listed in the DECVAR statement. To specify the values of nonzero derivatives, the variables specified in the CRPJAC statement have to be defined at the left-hand side of algebraic expressions in programming statements. For example, consider the Rosenbrock function:

proc nlp tech=levmar;
   lsq f1 f2;
   decvar x1 x2;
   gradient g1 g2;
   crpjac cpj1-cpj3;
   
   f1   = 10 * (x2 - x1 * x1);
   f2   = 1 - x1;
   g1   = -200 * x1 * (x2 - x1 * x1) - (1 - x1);
   g2   =  100 * (x2 - x1 * x1);
   
   cpj1 = 400 * x1 * x1 + 1 ;
   cpj2 = -200 * x1;
   cpj3 = 100;
run;