Fminsearch does not admit bound constraints.
However simple transformation methods exist to
convert a bound constrained problem into an
Fminsearchbnd is used exactly like fminsearch,
except that bounds are applied to the variables.
The bounds are applied internally, using a
transformation of the variables. (Quadratic for
single bounds, sin(x) for dual bounds.)
The bounds are inclusive inequalities, which admit
the boundary values themselves, but will not permit
ANY function evaluations outside the bounds.
Note that fminsearchbnd allows the user to exactly fix a variable at some given value, by setting both bounds to the exact same value.
rosen = @(x) (1-x(1)).^2 + 105*(x(2)-x(1).^2).^2;
% unconstrained fminsearch solution
% Lower bounds, no upper bounds
fminsearchbnd(rosen,[2.5 2.5],[2 2],)
Lower bounds on both vars, upper bound on x(2)
fminsearchbnd(rosen,[2.5 2.5],[2 2],[inf 3])
I've now included fminsearchcon in the package, a tool that also allows nonlinear constraints.