文档介绍:MATLAB优化工具箱的使用
方法
导读:就爱阅读网友为您分享以下“MATLAB优化工具 箱的使用方法”资讯,希望对您有所帮助, 的支持!
谢金星:MATLAB优化工具箱和LINDO/LINGO优化 软件第9页
[Cl,C2]=C(x)半无穷规划 vl W x W v2 (略)fseminf
(具体形式略)(略)
谢金星:MATLAB优化工具箱和LINDO/LINGO优化软 件在表2-1中用f表示标量值函数, 用F表示向量值函数,即F(x) = (fi(x)) o可以看出, MATLAB对连续优化问题求解提供了非常丰富的程序,而 对离散优化问题的求解,目前还没有提供任何功能(据说 优化工具箱的下一个版本将尝试克服这个主要的不足)。 fzero的基本用法fzero命 令用于求单变量方程的根,所采用的算法主要是二分法、割 线法和逆二次插值法等的混合方法。fzero至少需要两个输 入参数:函数、迭代初值(或有根区间)。如果方程左端的 函数形式很简单,可以不必编写函数M文件,而是直接用 MATLAB提供的inline函数输入方程左端的函数(inline 函数返回一个字符串表示的函数的句柄)。例如,对于方程 x3-2x-5=0, 可用如下命令求解: fzero(inline(4x *■ -2*x-5)0) % 初值取 0 或
fzero(inline(,xL-2*x-5)[l,3])% 有根区间取[1, 3](函数在 区间端点必须 异号) 的是,fzero实际上求得的不一定是函数的零点,而只是函 数值发生变号的点。对于连续函数,这个点就是近似零点; 但对于不连续的函数,这个点很可能只是一个间断点(且 在该点两边,函数值异号)。例如,如果输入fzero(***@tan,[-l,l]) 将得到正切函数的零点(0)。但是,如果输入 fzero(***@tan,[l,2])(即nil}.同 样道理,即使函数是连续函数而且有零点,但如果在该零点
附近函数值没有变号,则fzero也找不到这个零点(除非输 入的初值就是零点)。例如,如果输入fzero(inline(4x-| 4),1) 得到的输出为“NaN”(非数)。MATLAB中的命令一般都 有多种可选的参数输入方式,也可以输出多种计算结果,供 用户选用。例如,fzero命令的最一般的调用方式是: [x,fv,ef,out] = fzero(***@f,xO,opt,Pl,P2,...)其中 f 是函数名, x0是迭代初值(或有根区间),这是两个必须输入的参数。 opt是一个结构变量,含有用于控制程序运行的控制参数, ,用户不指定或指定为[]时将采 用缺省值。P1,P2,...是传给f函数的参数(如果需要的话)。 在输出列表中,x是变号点的近似值,fv是x点所对应的 函数值,ef是程序停止运行的原因,out是一个结构变量, 其中包含程序运行和停止时的一些相关信息。例如,如果输 入[x,fv,ef,out]=fzero(inline(4x1- -2*x-5,),0)将得到以下输出 结果:x = fv = --016 ef= 1 out=M 11 页共 112页%正数(1)表示找到异号点,负数(-1)表示没有找到异 号点
GO优化软件iterations: 39 %迭代 了 39次 (=39,下同) funcCount: 39 % 函数被调用了 39 次 algorithm: bisection, interpolation9 % 算法是二分法和插值法 fsolve的基本用法fsolve命令用于非线性方程组的求解 (当然也可以用于方程求根,但效果一般不如fzero程序), 最一般的调用方式是: [x,fv,ef,out,jac]= fsolve(***@F,xO,opt,Pl,P2, ...)其中输入列表和输出列表与上 面对fzero的说明类似,只是opt中可以使用的控制参数 更多,out中能够输出结果(x点)处梯度向量的范数(实 际上是1-范数,即分量按绝对值取最大的值),还可以输出 x点所对应的雅可比矩阵jaco 22Dxl+x2 = 4例1用 fsolve求解方程组口2来说明其用法。20 xl-x2 = l首 文件计算函数值:function y=exam0201fun(x,a,b,c,d) y(l)=x(l)i +a*x(2)i -b; % 当 a =1, b=4 时为第 1