MATLAB Function Reference |
Minimize a function of several variables
Note
The fmins function was replaced by fminsearch in Release 11 (MATLAB 5.3). In Release 12 (MATLAB 6.0), fmins displays a warning message and calls fminsearch .
|
Syntax
x = fmins('fun
',x0) x = fmins('fun
',x0,options) x = fmins('fun
',x0,options,[],P1,P2, ...) [x,options] = fmins(...)
Description
x = fmins('
returns a vector fun
',x0)
x
which is a local minimizer of fun(x)
near .
x = fmins('
does the same as the above, but uses fun
',x0,options)
options
control parameters.
x = fmins('
does the same as above, but passes arguments to the objective function, fun
',x0,options,[],P1,P2,...)
fun(x,P1,P2,
...)
. Pass an empty matrix for options
to use the default value.
[x,options] = fmins(...)
returns, in options(10)
, a count of the number of steps taken.
Arguments
Examples
A classic test example for multidimensional minimization is the Rosenbrock banana function:
The minimum is at (1,1)
and has the value 0
. The traditional starting point is (-1.2,1)
. The M-file banana.m
defines the function.
function f = banana(x) f = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
[x,
out] = fmins('banana',
[-1.2,
1]); x out(10)
x = 1.0000 1.0000 ans = 165
This indicates that the minimizer was found to at least four decimal places in 165 steps.
Move the location of the minimum to the point [a,a^2]
by adding a second parameter to banana.m
.
function f = banana(x,
a) if nargin < 2,
a = 1; end f = 100*(x(2)-x(1)^2)^2+(a-x(1))^2;
[x,
out] = fmins('banana',
[-1.2,
1],
[0,
1.e-8],
[],
sqrt(2));
sets the new parameter to sqrt(2)
and seeks the minimum to an accuracy higher than the default.
Algorithm
The algorithm is the Nelder-Mead simplex search described in the two references. It is a direct search method that does not require gradients or other derivative information. If n
is the length of x
, a simplex in n
-dimensional space is characterized by the n+1
distinct vectors which are its vertices. In two-space, a simplex is a triangle; in three-space, it is a pyramid.
At each step of the search, a new point in or near the current simplex is generated. The function value at the new point is compared with the function's values at the vertices of the simplex and, usually, one of the vertices is replaced by the new point, giving a new simplex. This step is repeated until the diameter of the simplex is less than the specified tolerance.
See Also
fmin
Minimize a function of one variable
foptions
in the Optimization Toolbox (or typehelp foptions
).
References
[1] Nelder, J. A. and R. Mead, "A Simplex Method for Function Minimization," Computer Journal, Vol. 7, p. 308-313.
[2] Dennis, J. E. Jr. and D. J. Woods, "New Computing Environments: Microcomputers in Large-Scale Computing," edited by A. Wouk, SIAM, 1987, pp. 116-122.
fminbnd | fminsearch |