哈工程大学数值计算软件电子教案上页下页退出MATLAB的优化工具箱目前MATLAB已经有30多个工具箱,例如:通讯工具箱、控制系统工具箱、模糊逻辑工具箱、高阶谱分析工具箱、图像处理工具箱、模型预测控制工具箱、神经网络工具箱等等。下面我们将介绍常用优化工具箱。首先说明,使用这个工具箱前,必须先安装此工具箱及其相关的PDF或者HTML格式的帮助文件。本节将用一些实例说明本工具箱中几个常用的函数命令用法。哈工程大学数值计算软件电子教案上页下页退出●fminu或fminunc求多变量函数的最小值,它使用的是拟牛顿法。x=fminu('fun',x0)从初值x0寻找最小值并将结果赋值给x,其中目标函数fun由fun.m定义。x=fminu(‘fun’,x0,options)同上,但允许输入参数。Options(1)优化计算期间是否输出(0-不输出,1-输出);options(2)自变量x最低精度的终止判断,默认为1e-4;options(3)目标函数的终止精度,默认为1e-4;options(14)最大迭代次数,默认为自变量数目n*100;options(13)等式限定条件的个数;options(18)第一次迭代时的初始步长。这些选项对下面的函数也有效,有关options选项的详细信息,请键入“helpfoptions”观察。●constr或fmincon带限定条件的目标函数的最小值。x=constr(‘fun’,x0)从初值x0寻找;限定条件为“=0”的形式;x=constr(‘fun’,x0,options)同上,但允许输入控制参数;x=constr(‘fun’,x0,options,vlb,vub)限定x的上下界;哈工程大学数值计算软件电子教案上页下页退出●leastsq或lsqnonlin非线性最小二乘法求最小值,即求MIN∑fI2(x)=f(x)Tf(x)x=leastsq(‘fun’,x0)从矩阵x0开始寻找最小值;x=leastsq(‘fun’x0,options)同上,但允许输入控制参数;下面是一些例子。例1求f(x)=ex1(4x12+2x22+4x1x2+2x2+1)的最小值。先编写一个名为fun.m的M文件,输入具体函数,如下:%filename:fun.mfunctionf=fun(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);然后,在命令行下,键入x=[-1,1]%变量x1及x2的估计值,即x1=-1,x2=1x=fminunc(‘fun’,x)%将结果赋值给xdigets(8);vpa(x)ans=%即x1=0.5000035,x2=-1.0000087时取得极值[.50000350,-1.0000087]哈工程大学数值计算软件电子教案上页下页退出例2求上例中在条件1.5+x1x2-x1-x2=0,x1x2+10=0下最小值。先编写一个名为fun.m的M文件,输入具体函数,如下:%filename:fun.mfunction[f,g]=fun(x)%g为限定条件f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);g(1)=1.5+x(1)*x(2)-x(1)-x(2);g(2)=-x(1)*x(2)-10%限定条件都输成小于等于零的形式在命令窗口中,键入x=[-1,1];%变量x1及x2的估计值x=constr(‘fun’,x);digets(8);x=vpa(x)x=[-9.5474050,1.0474050]哈工程大学数值计算软件电子教案上页下页退出例3将例2中的x限定为大于等于零,重新求解。x=[-1,1];options=[];%使用options的缺省选项vlb=[0,0];vub=[];%下界x1=x2=0,不限定上界x=constr(‘fun’,x,options,vlb,vub);digits(8);vpa(x)ans=[0,1.5000000][f,g]=fun(x)%计算在极值点处函数值及限定条件的值g=0-10f=17/2哈工程大学数值计算软件电子教案上页下页退出例4在例2中,加入等式限定条件x1+x2=0,重新求解。%将fun.m文件改成如下:function[f,g]=fun(x)f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);g(1)=x(1)+x(2);%等式条件要放到限定条件的前面g(2)=1.5+x(1)*x(2)-x(1)-x(2);g(3)=-x(1)*x(2)-10x=[-1,1];options(13)=1;%只有一个等式限定条件x=constr(‘fun’,x,options);digits(5);vpa(x)ans=[-1.2247,1.2247]