用 MATLAB解无约束优化问题 「1.一元函数无约束优化问题:minf(x)x1≤x≤x2 fminbnd-单变量界约束非线性函数求极小值 常用格式如下: (1x=fminbnd(fun, x1, x 2) (2)x=fminbnd(fun, x1, x2, options) (3)【x,fva= minbnd() (4)x, fval,exitflagl=fminbnd(.) (5)[x, fvaL exitflag, output]=fminbnd(..) 其中等式(3)、(4)、(5)的右边可选用(1)或(2)的 等式右边 它要求目标函数必须是连续函数,并可能只给出局部最优解
用MATLAB解无约束优化问题 1. 一元函数无约束优化问题: min f x( ) 1 2 x x x 其中等式(3)、(4)、(5)的右边可选用(1)或(2)的 等式右边. 它要求目标函数必须是连续函数,并可能只给出局部最优解. 常用格式如下: (1)x= fminbnd (fun,x1,x2) (2)x= fminbnd (fun,x1,x2,options) (3)[x,fval]= fminbnd(…) (4)[x,fval,exitflag]= fminbnd(…) (5)[x,fval,exitflag,output]= fminbnd(…) fminbnd-单变量界约束非线性函数求极小值
MATLAB(wlitil 例1求x=2 Sin x在0<x<8中的最小值与最大值 主程序为wlim: f=2exp(x)sin(x)’; fplo(f0,8];%作图语句 xmin, ymin]=fminbnd(, 0, 8) fl="-2*exp(-x). *sin(x); xmax, ymax]=fminbnd (fl,0, 8) 运行结果: xmin=3.9270 ymin=-0.0279 xmax 0.7854ymax=0.6448
运行结果: xmin = 3.9270 ymin = -0.0279 xmax = 0.7854 ymax = 0.6448 MATLAB(wliti1) 例 1 求 x = 2e sin x x − 在 0<x <8 中的最小值与最大值. 主程序为wliti1.m: f='2*exp(-x).*sin(x)'; fplot(f,[0,8]); %作图语句 [xmin,ymin]=fminbnd (f, 0,8) f1='-2*exp(-x).*sin (x)'; [xmax,ymax]=fminbnd (f1, 0,8)
例2有边长为3m的正方形铁板,在四个角剪去相等的正方形以 制成方形无盖水槽,问如何剪法使水槽的容积最大? 解设剪去的正方形的边长为x,则水槽的容积为:(3-2x)2x 建立无约束优化模型为:miny=(3-2x)x,0<x<1.5 先编写M文件fun0m如下: function f=funO(x) f=(3-2*x).^2*x; 主程序为w2m: x, fval]=fminbnd(,, 0, 1.5); Maxx MATLAB(wIiti2 fmax=-fyal 运算结果为xmax=0.500,max=20000即剪掉的正方形的边 长为0.5m时水槽的容积最大最大容积为2m
例2 有边长为3m的正方形铁板,在四个角剪去相等的正方形以 制成方形无盖水槽,问如何剪法使水槽的容积最大? 设剪去的正方形的边长为 x ,则水槽的容积为: x x 2 (3− 2 ) 建立无约束优化模型为:min y =- x x 2 (3− 2 ) , 0< x <1.5 解 先编写M文件fun0.m如下: function f=fun0(x) f=-(3-2*x).^2*x; 主程序为wliti2.m: [x,fval]=fminbnd('fun0',0,1.5); xmax=x fmax=-fval 运算结果为: xmax = 0.5000,fmax =2.0000.即剪掉的正方形的边 长为0.5m时水槽的容积最大,最大容积为2m3 . MATLAB(wliti2)
2多元函数无约束优化问题 标准型为:minF(X) fminunc-求多变量函数局部极小值 fmisearch-求多变量函数局部极小值(非线性单纯性法) 命令格式为 (1x=fminunc(fun, XO); ix=fminsearch(fun, XO) (2)x=fminunc(fun, X0, options); %fminsearch (3)x, fall=fminunc(.); (4)x, fval, exitflagl=fminunc(.) (5)x, fval, exitflag, output=fminunc(.)
命令格式为: (1)x= fminunc(fun,X0);或x=fminsearch(fun,X0) (2)x= fminunc(fun,X0,options);% fminsearch (3)[x,fval]= fminunc(…); (4)[x,fval,exitflag]= fminunc(…); (5)[x,fval,exitflag,output]= fminunc (…); 2.多元函数无约束优化问题 标准型为:min F X( ) fminunc-求多变量函数局部极小值 fmisearch-求多变量函数局部极小值(非线性单纯性法)
例:用 fminsearch函数求解 输入命令: f'100*(x(2)-x(1)^2)^2+(1-x(1)^2'; Ix, fval, exitflag, output=fminsearch(f, [-122D) 运行结果: X=100001.0000 fval=1.915le-010 exiting output= iterations: 108 func count: 202 algorthm: Nelder-Mead simplex direct search
例: 用fminsearch函数求解 输入命令: f='100*(x(2)-x(1)^2)^2+(1-x(1))^2'; [x,fval,exitflag,output]=fminsearch(f,[-1.2 2]) 运行结果: x =1.0000 1.0000 fval =1.9151e-010 exitflag = 1 output= iterations: 108 funcCount: 202 algorthm: 'Nelder-Mead simplex direct search