|
约束优化也是求解f (x )的最小值,但x被限制在定义域内。MATLAB提供用于无约束规划的函数包括fminbnd、fmincon和fseminf。
fminbnd函数用于求解单变量函数的最小值,即求f (x )最小值,且满足x 1 < x < x 2 。该函数的调用格式如下:
- x = fminbnd(fun,x1,x2)
- x = fminbnd(fun,x1,x2,options)
- x = fminbnd(problem)
- [x,fval] = fminbnd(...)
- [x,fval,exitflag] = fminbnd(...)
- [x,fval,exitflag,output] = fminbnd(...)
复制代码 其中,x1、x2分别为下、上限;其余参数可参考fminsearch函数。
例:求sin(x)在(0, 2pi)上的最小值。
在命令行窗口输入:
- fun=@sin
- [x,fval,exitflag] = fminbnd(fun,0,2*pi)
复制代码 输出结果如下:- fun = @sin
- x = 4.7124
- fval = -1.0000
- exitflag = 1
复制代码 fmincon函数用于求解函数的最小值,即求f (x )最小值,且满足:
该函数的调用格式如下:
- x = fmincon(fun,x0,A,b)
- x = fmincon(fun,x0,A,b,Aeq,beq)
- x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
- x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
- x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
- x = fmincon(problem)
- [x,fval] = fmincon(...)
- [x,fval,exitflag] = fmincon(...)
- [x,fval,exitflag,output] = fmincon(...)
- [x,fval,exitflag,output,lambda] = fmincon(...)
- [x,fval,exitflag,output,lambda,grad]= fmincon(...)
- [x,fval,exitflag,output,lambda,grad,hessian]= fmincon(...)
复制代码 其中,nonlcon用于提供非线性c(x)或ceq(x)。其余参数可参考linprog函数和fminunc函数。
|
|