IMSL C# Numerical Library

MinUnconMultiVar Class

Minimizes a multivariate function using a quasi-Newton method.

For a list of all members of this type, see MinUnconMultiVar Members.

System.Object
   Imsl.Math.MinUnconMultiVar

public class MinUnconMultiVar

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

Class MinUnconMultivar uses a quasi-Newton method to find the minimum of a function f(x) of n variables. The problem is stated as follows:

\mathop {\min }\limits_{x\; \in \;R^n } f\left
            ( x \right)

Given a starting point x_c, the search direction is computed according to the formula

d = -B^{-1} g_c

where B is a positive definite approximation of the Hessian, and g_c is the gradient evaluated at x_c. A line search is then used to find a new point

x_n  = \,x_c  + \lambda d,\lambda  > 0

such that

f\left( {x_n } \right) \le f\left( {x_c } 
            \right) + \alpha g^T d,\,\,\,\, \alpha  \in \left( {0,\,0.5} \right)

Finally, the optimality condition {\rm{||g(x)|| }} \le 
            \varepsilon where \varepsilon is a gradient tolerance.

When optimality is not achieved, B is updated according to the BFGS formula

B \leftarrow B - \frac{{Bss^T B}}{{s^T
            Bs}} + \frac{{yy^T }}{{y^T s}}

where s = x_n - x_c and y = g_n - g_c. Another search direction is then computed to begin the next iteration. For more details, see Dennis and Schnabel (1983, Appendix A).

In this implementation, the first stopping criterion for MinUnconMultivar occurs when the norm of the gradient is less than the given gradient tolerance property, GradientTolerance. The second stopping criterion for MinUnconMultivar occurs when the scaled distance between the last two steps is less than the step tolerance property, StepTolerance.

Since by default, a finite-difference method is used to estimate the gradient. An inaccurate estimate of the gradient may cause the algorithm to terminate at a noncritical point. Supply the gradient for a more accurate gradient evaluation (MinConMultiVar.IGradient).

Requirements

Namespace: Imsl.Math

Assembly: ImslCS (in ImslCS.dll)

See Also

MinUnconMultiVar Members | Imsl.Math Namespace | Finite-difference Example | Gradient Example