Welcome to the L3 Harris Geospatial documentation center. Here you will find reference guides and help documents.
﻿

### DFPMIN

DFPMIN

The DFPMIN procedure minimizes a user-written function Func of two or more independent variables using the Broyden-Fletcher-Goldfarb-Shanno variant of the Davidon-Fletcher-Powell method, using its gradient as calculated by a user-written function Dfunc.

DFPMIN is based on the routine dfpmin described in section 10.7 of Numerical Recipes in C: The Art of Scientific Computing (Second Edition), published by Cambridge University Press, and is used by permission.

## Examples

To minimize the function MINIMUM:

`PRO example_dfpmin`
` `
`   ; Make an initial guess (the algorithm’s starting point):`
`   X = [1.0, 1.0]`
` `
`   ; Set the convergence requirement on the gradient:`
`   Gtol = 1.0e-7`
` `
`   ; Find the minimizing value:`
`   DFPMIN, X, Gtol, Fmin, 'minimum', 'grad'`
` `
`   ; Print the minimizing value:`
`   PRINT, X`
` `
`END`
` `
`FUNCTION minimum, X `
`   RETURN, (X - 3.0)^4 + (X - 2.0)^2`
`END`
` `
`FUNCTION grad, X`
`   RETURN, [4.0*(X - 3.0)^3, 2.0*(X - 2.0)]`
`END`

IDL prints:

`  3.00175  2.00000`

## Syntax

DFPMIN, X, Gtol, Fmin, Func, Dfunc [, /DOUBLE] [, EPS=value] [, ITER=variable] [, ITMAX=value] [, STEPMAX=value] [, TOLX=value]

## Arguments

### X

On input, X is an n-element vector specifying the starting point. On output, it is replaced with the location of the minimum.

Note: If DFPMIN is complex then only the real part is used for the computation.

### Gtol

An input value specifying the convergence requirement on zeroing the gradient.

### Fmin

On output, Fmin contains the value at the minimum-point X of the user-supplied function specified by Func.

### Func

A scalar string specifying the name of a user-supplied IDL function of two or more independent variables to be minimized. This function must accept a vector argument X and return a scalar result.

For example, suppose we wish to find the minimum value of the function

y = (x0 – 3)4 + (x1 – 2)2

To evaluate this expression, we define an IDL function named MINIMUM:

`FUNCTION minimum, X `
`   RETURN, (X - 3.0)^4 + (X - 2.0)^2`
`END`

### Dfunc

A scalar string specifying the name of a user-supplied IDL function that calculates the gradient of the function specified by Func. This function must accept a vector argument X and return a vector result.

For example, the gradient of the above function is defined by the partial derivatives: We can write a function GRAD to express these relationships in the IDL language:

`FUNCTION grad, X`
`   RETURN, [4.0*(X - 3.0)^3, 2.0*(X - 2.0)]`
`END`

## Keywords

### DOUBLE

Set this keyword to force the computation to be done in double-precision arithmetic.

### EPS

Use this keyword to specify a number close to the machine precision. For single-precision calculations, the default value is 3.0 x 10-8. For double-precision calculations, the default value is 3.0 x 10-16.

### ITER

Use this keyword to specify a named variable which returns the number of iterations performed.

### ITMAX

Use this keyword to specify the maximum number of iterations allowed. The default value is 200.

### STEPMAX

Use this keyword to specify the scaled maximum step length allowed in line searches. The default value is 100.0

### TOLX

Use this keyword to specify the convergence criterion on X values. The default value is 4 x EPS.

## Version History

 4 Introduced