## Derivatives

Nonlinear modeling techniques require the calculation of derivatives of certain
variables with respect to other variables.
The MODEL procedure includes an analytic differentiator that determines the
model derivatives and generates program code to compute these
derivatives. When parameters are estimated, the MODEL procedure takes
the derivatives of the equation with respect to the parameters.
When the model is solved,
Newton's method requires the derivatives of the equations
with respect to the variables solved for.

PROC MODEL uses exact mathematical formulas for derivatives of
non-user-defined functions. For other functions, numerical derivatives are
computed and used.

The differentiator differentiates the entire model program, including
conditional logic and flow of control statements. Delayed definitions,
as when the LAG of a program variable is referred to before the
variable is assigned a value, are also differentiated correctly.

The differentiator includes optimization features that produce
efficient code for the calculation of derivatives. However, when flow of
control statements such as GOTO statements are used,
the optimization process is impeded, and
less efficient code for derivatives may be produced. Optimization is also
reduced by conditional statements, iterative DO loops, and multiple
assignments to the same variable.

The table of derivatives is printed with the LISTDER option.
The code generated for the computation of the derivatives is printed
with the LISTCODE option.

*Derivative Variables*

When the differentiator needs to generate code to evaluate the
expression for the derivative of a variable, the result is stored in a
special derivative variable. Derivative variables are not created
when the derivative expression reduces to a previously
computed result, a variable, or a constant.
The names of derivative variables, which may sometimes appear
in the printed output, have the form @*obj*/@*wrt*,
where *obj* is the variable whose derivative is being taken and *wrt* is
the variable that the differentiation is with respect to. For example,
the derivative variable for the derivative of *Y* with respect to *X*
is named *@Y/@X*.
The derivative variables cannot be accessed or used as part of the
model program.

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.