The FD= and FDHESSIAN= options specify the use of finitedifference approximations of the derivatives. The FD= option specifies that all derivatives are approximated using function evaluations, and the FDHESSIAN= option specifies that secondorder derivatives are approximated using gradient evaluations.
Computing derivatives by finitedifference approximations can be very timeconsuming, especially for secondorder derivatives based only on values of the objective function ( FD= option). If analytical derivatives are difficult to obtain (for example, if a function is computed by an iterative process), you might consider one of the optimization techniques that uses firstorder derivatives only (TECH=QUANEW, TECH=DBLDOG, or TECH=CONGRA).
The forwarddifference derivative approximations consume less computer time but are usually not as precise as those using centraldifference formulas.
Firstorder derivatives: additional function calls are needed:
Secondorder derivatives based on function calls only (Dennis and Schnabel 1983, p. 80, 104): for dense Hessian, additional function calls are needed:
Secondorder derivatives based on gradient calls (Dennis and Schnabel 1983, p. 103): additional gradient calls are needed:
Firstorder derivatives: additional function calls are needed:
Secondorder derivatives based on function calls only (Abramowitz and Stegun 1972, p. 884): for dense Hessian, additional function calls are needed:






Secondorder derivatives based on gradient: additional gradient calls are needed:
The FDIGITS= and CDIGITS= options can be used for specifying the number of accurate digits in the evaluation of objective function and nonlinear constraints. These specifications are helpful in determining an appropriate interval length to be used in the finitedifference formulas.
The FDINT= option specifies whether the finitedifference intervals should be computed using an algorithm of Gill, Murray, Saunders, and Wright (1983) or based only on the information of the FDIGITS= and CDIGITS= options. For FDINT=OBJ, the interval is based on the behavior of the objective function; for FDINT=CON, the interval is based on the behavior of the nonlinear constraints functions; and for FDINT=ALL, the interval is based on the behaviors of both the objective function and the nonlinear constraints functions. Note that the algorithm of Gill, Murray, Saunders, and Wright (1983) to compute the finitedifference intervals can be very expensive in the number of function calls. If the FDINT= option is specified, it is currently performed twice, the first time before the optimization process starts and the second time after the optimization terminates.
If FDINT= is not specified, the step lengths , , are defined as follows:
for the forwarddifference approximation of firstorder derivatives using function calls and secondorder derivatives using gradient calls: ,
for the forwarddifference approximation of secondorder derivatives that use only function calls and all centraldifference formulas: ,
where is defined using the FDIGITS= option:
For FDINT=OBJ and FDINT=ALL, the FDIGITS= specification is used in computing the forward and central finitedifference intervals.
If the problem has nonlinear constraints and the FD= option is specified, the firstorder formulas are used to compute finitedifference approximations of the Jacobian matrix . You can use the CDIGITS= option to specify the number of accurate digits in the constraint evaluations to define the step lengths , . For FDINT=CON and FDINT=ALL, the CDIGITS= specification is used in computing the forward and central finitedifference intervals.
Note: If you are unable to specify analytic derivatives and the finitedifference approximations provided by PROC NLP are not good enough to solve your problem, you may program better finitedifference approximations using the GRADIENT, JACOBIAN, CRPJAC, or HESSIAN statement and the program statements.