Finds the minimum point for a smooth univariate function using function and optionally first derivative evaluations.
For a list of all members of this type, see MinUncon Members.
System.Object
Imsl.Math.MinUncon
Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.
MinUncon
uses two separate algorithms to compute the minimum depending on what the user supplies as the function f
.
If f
defines the function whose minimum is to be found MinUncon
uses a safeguarded quadratic interpolation method to find a minimum point of a univariate function. Both the code and the underlying algorithm are based on the routine ZXLSF
written by M.J.D. Powell at the University of Cambridge.
MinUncon
finds the least value of a univariate function, f, where f is a MinUncon.IFunction
. Optional data include an initial estimate of the solution, and a positive number specified by the Bound
property. Let where Guess
is specified by the Guess
property and , then x is restricted to the interval . Usually, the algorithm begins the search by moving from to , where s = Step. Step
is set by the Step
property. If Step
is not called then Step
is set to 0.1. Step
may be positive or negative. The first two function evaluations indicate the direction to the minimum point, and the search strides out along this direction until a bracket on a minimum point is found or until x reaches one of the bounds . During this stage, the step length increases by a factor of between two and nine per function evaluation; the factor depends on the position of the minimum point that is predicted by quadratic interpolation of the three most recent function values.
When an interval containing a solution has been found, we will have three points, , , and , with and and . There are three main ingredients in the technique for choosing the new x from these three points. They are (i) the estimate of the minimum point that is given by quadratic interpolation of the three function values, (ii) a tolerance parameter , that depends on the closeness of f to a quadratic, and (iii) whether is near the center of the range between and or is relatively close to an end of this range. In outline, the new value of x is as near as possible to the predicted minimum point, subject to being at least from , and subject to being in the longer interval between and or and when is particularly close to or . There is some elaboration, however, when the distance between these points is close to the required accuracy; when the distance is close to the machine precision; or when is relatively large.
The algorithm is intended to provide fast convergence when f has a positive and continuous second derivative at the minimum and to avoid gross inefficiencies in pathological cases, such as
The algorithm can make large automatically in the pathological cases. In this case, it is usual for a new value of x to be at the midpoint of the longer interval that is adjacent to the least calculated function value. The midpoint strategy is used frequently when changes to f are dominated by computer rounding errors, which will almost certainly happen if the user requests an accuracy that is less than the square root of the machine precision. In such cases, the routine claims to have achieved the required accuracy if it knows that there is a local minimum point within distance of x, where , specified by the Accuracy
property even though the rounding errors in f may cause the existence of other local minimum points nearby. This difficulty is inevitable in minimization routines that use only function values, so high precision arithmetic is recommended.
If f is a MinUncon.IDerivative
then MinUncon
uses a descent method with either the secant method or cubic interpolation to find a minimum point of a univariate function. It starts with an initial guess and two endpoints. If any of the three points is a local minimum point and has least function value, the routine terminates with a solution. Otherwise, the point with least function value will be used as the starting point.
From the starting point, say , the function value , the derivative value , and a new point defined by are computed. The function , and the derivative are then evaluated. If either or has the opposite sign of , then there exists a minimum point between and ; and an initial interval is obtained. Otherwise, since is kept as the point that has lowest function value, an interchange between and is performed. The secant method is then used to get a new point
Let and repeat this process until an interval containing a minimum is found or one of the convergence criteria is satisfied. The convergence criteria are as follows:
Criterion 1:
Criterion 2:
where , is a relative error tolerance and is a gradient tolerance.
When convergence is not achieved, a cubic interpolation is performed to obtain a new point. The function and derivative are then evaluated at that point; and accordingly, a smaller interval that contains a minimum point is chosen. A safeguarded method is used to ensure that the interval reduces by at least a fraction of the previous interval. Another cubic interpolation is then performed, and this procedure is repeated until one of the stopping criteria is met.
Namespace: Imsl.Math
Assembly: ImslCS (in ImslCS.dll)
MinUncon Members | Imsl.Math Namespace | Function values only Example | Function values and derivatives Example