fminsearch
Find the unconstrained minimum of a real function using the Nelder-Mead simplex algorithm.
Syntax
x = fminsearch(@func,x0)
x = fminsearch(@func,x0,options)
[x,fval,info,output] = fminsearch(...)
Inputs
- func
- The function to minimize.
- x0
- An estimate of the location of the minimum.
- options
- A struct containing option settings.
Outputs
- x
- The location of the function minimum.
- fval
- The minimum of the function.
- info
- The convergence status flag.
- info = 1
- Function value converged to within tolX.
- info = 0
- Reached maximum number of iterations or function calls.
- output
- A struct containing iteration details. The members are as follows:
- iterations
- The number of iterations.
- nfev
- The number of function evaluations.
- xiter
- The candidate solution at each iteration.
- fvaliter
- The objective function value at each iteration.
Examples
Minimize the Rosenbrock
function.
function obj = Rosenbrock(x)
obj = (1 - x(1))^2 + 100 * (x(2) - x(1)^2)^2;
end
x0 = [-1.2, 1.0];
[x,fval] = fminsearch(@Rosenbrock, x0)
x = [Matrix] 1 x 2
1.00000 1.00000
fval = 5.29978e-14
Modify the previous example to pass an extra parameter to the objective function using
a function handle.
function obj = Rosenbrock2(x, offset)
obj = (1 - x(1))^2 + 100 * (x(2) - x(1)^2)^2 + offset;
end
handle = @(x) Rosenbrock2(x, 2);
[x,fval] = fminsearch(handle, interval)
x = [Matrix] 1 x 2
1.00000 1.00000
fval = 2
Comments
fminsearch uses the Nelder-Mead simplex algorithm, which does not require the objective function to be differentiable. When the objective function is differentiable, fminunc is generally prefereble.
The optimset options and defaults are as follows:
- MaxIter: 400
- MaxFunEvals: 1,000,000
- TolX: 1.0e-7