




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
章名13附录AMATLAB工程应用简介一、MATLAB简介1.MATLAB的概况MATLAB是矩阵实验室(MatrixLaboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。MATLAB包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。2.MATLAB产生的历史背景在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPACK和LINPACK的FORTRAN子程序库。EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库,在当时,这两个程序库代表矩阵运算的最高水平。到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序。Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单词的前三个字母的组合。在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little,他敏锐地觉察到MATLAB在工程领域的广阔前景。同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版。这一代的MATLAB语言同时具备了数值计算和数据图示化的功能。1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发。在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类。一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低。MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB。经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位。在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRAN、C语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大的大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。目前,MATLAB的最高版本是2009年9月13日发布了Matlab R2009b,更多详细信息读者可以访问其官方网站:/。3MATLAB的语言特点一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下MATLAB的主要特点。1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。8)功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control toolbox,signl proceessing toolbox,optimization toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。9)源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。二、用Matlab处理矩阵矩阵在Matlab中是基本的数据单元,并提供了丰富的矩阵运算处理功能。Matlab中的矩阵变量名,必须是以字母开头的由字母和数字组成的字符串。1.矩阵的生成1)直接输入创建矩阵。Matlab中不需要设置矩阵的类型与维数,它们由输入的格式和内容来唯一决定。小矩阵和没有任何规律的矩阵可以通过直接输入元素的方法来创建,矩阵的元素由中括号括起来,同一行元素由逗号或者空格分开,行与行之间由回车或者分号分开,如图A.1所示。图A.1 矩阵的创建这种方法工作量大且容易出错,因此Matlab提供了许多函数和方法可以方便快速地创建矩阵。2)使用冒号创建矩阵。例A.1 a=-pi:pi;2:8a = -3.1416 -2.1416 -1.1416 -0.1416 0.8584 1.8584 2.8584 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.00002.特殊矩阵线性代数中有若干特殊意义和结构的矩阵,在Matlab中可以很容易的通过函数的方式创建它们,见表A.1。表A.1 特殊矩阵的创建生成矩阵的函数说明zeros(i,j)创建i行j列的全零矩阵ones(i,j)创建i行j列的全1矩阵eye(i,j)创建i行j列的对角线为1的矩阵rand(i,j)创建i行j列的(0,1)均布的随机矩阵创建一个空矩阵3.矩阵的运算这里介绍矩阵的算术运算、分块和转置。假设矩阵A和B已经进行了预先的定义,则执行命令;得到矩阵A和B的和矩阵C;得到矩阵A和B的差矩阵D;得到矩阵A和B的乘积矩阵F; 当矩阵A为实数矩阵时,得到的F就是A的转置;而当A为复数矩阵时,得到的F是A共轭转置。此外,在矩阵的算术运算中,“除法”是必须特殊考虑和研究的。设其中A为方阵,X为所要求解的向量,b为已知的向量。上述问题称为线性方程组,是线性代数讨论的中心问题。使用Matlab,用一个语句就可以得到该问题的解该运算背后的算法请参考相关Matlab书籍。 矩阵的分块也很容易用Matlab的语言实现,特别是行和列可以被视为特殊的分块矩阵。例如A(2,:)h和A(:,3)分别表示A的第二行和第三列,而且上述符号可以直接作为向量直接参与计算。假设H是一个1010的矩阵,则H(:,4:8)表示的是H的第四到第八列组成的105的矩阵。从下面的例A.2读者可以学到另外的创建矩阵的途径:例A.2 a=1 3 5 7 9;2 4 6 8 10;-2 -3 -4 -5 -6;-4 -5 -6 -7 -8;5 6 7 8 9a = 1 3 5 7 9 2 4 6 8 10 -2 -3 -4 -5 -6 -4 -5 -6 -7 -8 5 6 7 8 9继续执行命令b=a(1 3 5,4)得到的结果是矩阵a的第四列的第一、三、五个元素组成的向量,即 b=a(1 3 5,4) b = 7 -5 8而如果执行命令b=a(1 3 5,:)得到的结果是由矩阵a的第1、3、5行的所有元素组成的矩阵,即 b=a(1 3 5,:)b = 1 3 5 7 9 -2 -3 -4 -5 -6 5 6 7 8 9在Matlab的语言中“:”是十分常用的。例如X=-10:2:10; X为11维的向量,元素分别为;Y=0:0.1:2;生成的Y为21维的向量,元素间的增量为0.1;同理 z=1:3 2:2:8 6:3:15z = 1 2 3 2 4 6 8 6 9 12 15三、用Matlab绘图计算的可视化是科学与工程计算的主导方向之一,其中绘制图形是表达计算结果的重要手段之一。Matlab提供了许多可以选用的图形工具,这里简单介绍较常用的几个。1.二维图形函数Plot命令是最常用的二维绘图命令。如plot(x,y,-)将向量x和y对应的元素定义的点依次用实线连接起来,这里要求x和y的向量维数必须相同。若x和y为矩阵,则将按列依次处理。例A.3 x=1:pi/20:2*pi; y=sin(x); plot(x,y,*)运行后其结果如图A.2所示相关绘图辅助函数图A.2 二维绘图函数举例Matlab还提供了一些绘图辅助函数,用来对绘出的图形进行进一步的控制:(1) title() 在图形的上方显示用户指定的图形标题;(2) xlabel(),ylabel() 分别在x和y轴显示用户指定的文字信息;(3) grid on将在图形中显示虚线网格;(4) text(x,y,) 在用户指定的坐标位置显示文字信息; 例A.3 x=0:pi/20:2*pi; y=sin(x); plot(x,y,-);title(正弦函数曲线); xlabel(角度变量(rad); ylabel(对应的正弦值); text(3.16,0,正弦值为零);则运行后的结果如图A.3所示,更多的格式控制请参考Matlab教材。图A.3 辅助函数的应用2.三维图形函数三维立体图形在Matlab中的显示也不难,例如对于sinc函数可以通过如下几行命令绘制其图形:例A.4 X,Y = meshgrid(-8:.5:8); R = sqrt(X.2 + Y.2) + eps;Z = sin(R)./R;mesh(X,Y,Z,EdgeColor,black);上述命令在区域上绘制该函数的图形,其中eps是用来防止出现除零的错误。运行后其图形如图A.4所示。图A.4 三维绘图函数举例四、应用Matlab编程Matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易,是matlab重要组成部分。含matlab语言代码的文件称为m文件,其扩展名为m。用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件包编辑。m文件通过各种文本编辑器进行编辑。1.m文件的类型m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。m文件有两种类型 :独立的m文件又称命令文件;可调用m文件 又称函数文件。其中函数文件又分为Matlab系统的内部函数文件和用户编写的函数文件。1.1命令文件最简单的m文件命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。例如,在Matlab命令窗口输入:edit simple.m; 回车,将弹出图A.5所示的m文件编辑窗口,不论是命令文件还是函数文件都在此窗口内进行编辑和调试。保存后,在命令窗口执行命令:simple 将绘制出与图A.4完全一样的图形。1.2 Matlab内置的函数文件Matlab自定义的函数文件称内置函数文件。调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。如,例A.3中的命令中就包含对内置的sin.m文件的调用。又如 sqrt(x) 求x的平方根; abs(x)求x的绝对值;det(a)求矩阵行列式的值等等。Matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。图A.5 命令m文件的创建1.3 用户自定义的函数文件matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。对于某一类特殊问题,如果创建了许多m函数文件,则可形成新的工具箱。这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。2. 函数m文件的格式函数m文件的格式: function 返回变量=函数名(输入变量) 注释说明语句段 程序语句段特定规则:函数m文件第一行必须以单词function作为引导词,必须遵循如下形式: 1) function =()2)m文件的文件名必须是 .m。程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。例A.5 edit sinplot.m在程序编辑窗口中,键入如图A.6所示的程序代码后保存图A.6 函数文件的创立于调用在命令窗口中键入: a=0; b=2*pi; c=sinplot(a,b);则程序运行后将绘制与图A.3类似的图形,仅x轴的范围由输入参数a和b指定。matlab语言的程序结构与其它高级语言是一致的,分为顺序结构、循环结构和分支结构,限于篇幅所限,本文不予详细介绍。五、Matlab优化工具箱利用Matlab的优化工具箱,可以求解线性规划、非线性规划和多目标规划问题。具体而言,包括线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题。另外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。本文在此仅做简单的介绍。1.Matlab求解优化问题所用到的主要函数优化工具箱中的函数包括下面几类最小化函数表A.1 最小化函数表优化函数用于求解的优化问题描述fgoalattain多目标达到问题fminbnd有边界的标量非线性最小化fmincon有约束的非线性最小化fminimax最大最小化fminsearch, fminunc无约束非线性最小化fseminf半无限问题linprog线性课题quadprog二次课题方程求解函数表A.2 方程求解函数表函数名称用于求解的方程类型描述线性方程组求解fsolve非线性方程组求解fzero标量非线性方程求解实用设置函数表A.3 用于对优化函数进行设置的函数表函数名称用于求解的方程类型描述optimset设置所调用的优化函数里面的相关参数optimget获得被调用优化函数的参数调用信息2. 应用Fsolve函数求解非线性方程组优化工具箱中提供了fsolve函数用于求解非线性方程组,其调用语法格式如下:x = fsolve(fun,x0)x = fsolve(fun,x0,options)x = fsolve(fun,x0,options,P1,P2, . )x,fval = fsolve(.)x,fval,exitflag = fsolve(.)x,fval,exitflag,output = fsolve(.)x,fval,exitflag,output,jacobian = fsolve(.)上述调用格式的意义如下:x = fsolve(fun,x0) 从初始点x0出发,求有参数fun描述的非线性方程组;x = fsolve(fun,x0,options) 根据options中的相关参数的设定从初始点x0出发,求有参数fun描述的非线性方程组;x = fsolve(fun,x0,options,P1,P2,.) 在这种调用格式中,允许fun所描述的非线性方程组中含有其它与问题相关的参数输入。 x,fval = fsolve(fun,x0) 计算结束后,将解向量x带入方程组中,将值返回给fval。 x,fval,exitflag = fsolve(.) 给出计算结果的有效性的信息,其意义同finunc中的介绍。x,fval,exitflag,output = fsolve(.)给出计算过程的相关信息,其意义同finunc中的介绍。2.1应用举例设需要求如下非线性方程组:若要用fsolve函数来求解此非线性方程组,需要如下步骤。1)编制其描述函数的m文件将上面的非线性方程变换成如下形式并编制myfun.m文件,并保存,代码如下。function F = myfun(x)F (1)=2*x(1) - x(2) - exp(-x(1); F(2)= -x(1) + 2*x(2) - exp(-x(2);2)调用fsolve函数进行求解对应的代码如下:x0 = -5; -5; % 给定一个初始猜测点options=optimset(Display,iter); % 要求运算后输出迭代计算过程x,fval = fsolve(myfun,x0,options) % 调用函数进行求解3)结果的输出 程序运行后,输出结果如下:After 33 function evaluations, a zero is found. Iteration Func-count f(x) step optimality Norm of First-order Trust-region radius 0 3 23535.6 2.29e+004 1 1 6 6001.72 1 5.75e+003 1 2 9 1573.51 1 1.47e+003 1 3 12 427.226 1 388 1 4 15 119.763 1 107 1 5 18 33.5206 1 30.8 1 6 21 8.35208 1 9.05 1 7 24 1.21394 1 2.26 1 8 27 0.016329 0.759511 0.206 2.5 9 30 3.51575e-006 0.111927 0.00294 2.5 10 33 1.64763e-013 0.00169132 6.36e-007 2.5Optimization terminated successfully: First-order optimality is less than options.TolFunx = 0.5671 0.5671fval = 1.0e-006 * -0.4059 -0.40593.无约束优化问题求解优化工具箱中提供了函数fminunc用于进行无约束优化问题求解,其语法格式如下:x = fminunc(fun,x0)x = fminunc(fun,x0,options)x = fminunc(fun,x0,options,P1,P2,.)x,fval = fminunc(.)x,fval,exitflag = fminunc(.)x,fval,exitflag,output = fminunc(.)x,fval,exitflag,output,grad = fminunc(.)x,fval,exitflag,output,grad,hessian = fminunc(.)上述格式调用的意义如下:x = fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。x0根据具体问题可以是标量或向量。x = fminunc(fun,x0,options)用options参数中指定的参数的设置值调用fminunc求函数的局部极小点x。x = fminunc(fun,x0,options,P1,P2,)将问题参数p1、p2等直接输给目标函数fun,若将options参数设置为空矩阵,作为options参数的缺省值。此调用格式适合于目标函数需要除设计变量以外的其它与问题实际相关的参数输入的场合,p1、p2可以是向量或标量。x,fval = fminunc()将最优解x处目标函数的值返回到fval参数中。x,fval,exitflag = fminunc()返回exitflag值,描述函数求得的最优解的有效性。x,fval,exitflag,output = fminunc()求解的同时,增加对包含优化信息的结构输出。x,fval,exitflag,output,grad = fminunc()将解x处fun即目标函数的梯度值返回到grad参数中。x,fval,exitflag,output,grad,hessian = fminunc()将解x处目标函数的Hessian矩阵信息返回到hessian参数中。函数调用中,部分重要的输入输出参数的主要意义及用法如下:1)fun为目标函数的句柄。即需要被进行最优化计算的目标函数。fun函数需要输入标量参数x,返回x处的目标函数标量值f。可以将简单fun函数指定为内联函数,如 x = fminunc(inline(sin(x*x),x0)通常情况下,fun参数可以是一个包含函数名的字符串。对应的函数可以是M文件、内部函数或MEX文件。若fun=myfun,则M文件函数myfun.m必须有下面的形式: function f = myfun(x) f = . %计算x处的函数值。若fun函数的梯度可以算得,且options.GradObj设为on(用下式设定), options = optimset(GradObj,on)则fun函数必须返回解x处的梯度向量g到第二个输出变量中去。注意,当被调用的fun函数只需要一个输出变量时(如算法只需要目标函数的值而不需要其梯度值时),可以通过核对nargout的值来避免计算梯度值。function f,g = myfun(x)f = . %计算x处得函数值if nargout 1 %调用fun函数并要求有两个输出变量 g = . %计算x处的梯度值end若Hessian矩阵也可以求得,并且options.Hessian设为on,即, options = optimset(Hessian,on)则fun函数必须返回解x处的Hessian对称矩阵H到第三个输出变量中去。注意,当被调用的fun函数只需要一个或两个输出变量时(如算法只需要目标函数的值f和梯度值g而不需要Hessian矩阵H时),可以通过核对nargout的值来避免计算Hessian矩阵function f,g,H = myfun(x)f = . % 计算x处得函数值if nargout 1 % 调用fun函数并要求有两个输出变量 g = . % 计算x处的梯度值 if nargout 2 H = . % 计算x处的Hessian矩阵end2)options优化参数选项。可以通过optimset函数设置或改变这些参数。其中有的参数适用于所有的优化算法,有的则只适用于大型优化问题,另外一些则只适用于中型问题。通常情况下,只需要保持其默认设置就可以了,这里仅简单介绍其中的几个参数值的意义及其设置。LargeScale 当设为on时使用大型算法,默认设为off则使用中型问题的算法。Display 是否显示优化计算过程。选择off,不显示输出;选择iter,显示每一步迭代过程的输出;选择final,显示最终结果。MaxFunEvals 函数评价的最大次数。MaxIter 最大允许迭代次数。TolFun 函数值的终止容限。TolX x处的终止容限。3)exitflag描述优化计算结束后,其结果的有效性。若其返回值:A. 大于0 表示目标函数收敛于最优解x处B. 等于0表示已经达到函数计算或迭代的最大次数。C. 小于0表示优化跌的计算不收敛,输出值无效4)output该参数包含下列有关本次优化计算的信息,辅助用户对优化结果进行判断:output.iterations 迭代次数。output.algorithm 所采用的优化算法。output.funcCount 函数的调用次数。output.cgiterations PCG迭代次数(只适用于大型规划问题)。output.stepsize 最终步长的大小(只用于中型问题)。 output.firstorderopt 一阶优化的度量:解x处梯度的范数。3.1应用举例设需要求如下函数的无约束最优值则需要如下步骤进行优化求解:1)编制目标函数的m文件,并保存为myfun.mfunction f = myfun(x)f = 3*x(1)2 + 2*x(1)*x(2) + x(2)2; % 根据输入向量x求函数值2)给定初始值,并调用fminunc函数进行求解。在命令窗口中键入如下命令:x0 = 1,1; %设定优化计算的初始点x,fval = fminunc(myfun,x0) %调用优化函数进行求解计算后,输出如下结果x =1.0e-008 * -0.7512 0.2479fval =1.3818e-016若在优化时,想利用目标函数的梯度信息,则需要将mufun.m进行如下修改: f,g = myfun(x)f = 3*x(1)2 + 2*x(1)*x(2) + x(2)2; % 根据输入向量求解函数值if nargout 1 %若目标函数被调用时要求返回1个以上的参数,则将梯度信息返回至g中 g(1) = 6*x(1)+2*x(2); g(2) = 2*x(1)+2*x(2);end在命令行中进行调用时,需要对options参数进行适当的设置,应用optimset函数。options = optimset(GradObj,on);x0 = 1,1;x,fval = fminunc(myfun,x0,options)运行后,得到的输出结果如下: x =1.0e-015 * 0.1110 -0.8882fval2 =6.2862e-031显然,其结果优于没有应用梯度信息的调用方式。4.有约束优化问题求解优化工具箱提供fmincon函数用于对有约束优化问题进行求解,其语法格式如下: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(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, .)x,fval = fmincon(.)x,fval,exitflag = fmincon(.)x,fval,exitflag,output = fmincon(.)其中,x, b, beq, lb,和ub为线性不等式约束的上、下界向量, A 和 Aeq 为线性不等式约束和等式约束的系数矩阵矩阵,fun为目标函数,nonlcon为非线性约束函数。显然,其调用语法中有很多和无约束函数fminunc的格式是一样的,其意义也相同,在此不在重复介绍。对应上述调用格式的解释如下:x = fmincon(fun,x0,A,b) 给定初值x0,求解fun函数的最小值x。fun函数的约束条件为A*x = b,x0可以是标量或向量。x = fmincon(fun,x0,A,b,Aeq,beq) 最小化fun函数,约束条件为Aeq*x = beq 和 A*x = b。若没有不等式线性约束存在,则设置A=、b=。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 定义设计变量x的线性不等式约束下界lb和上界ub,使得总是有lb = x = ub。若无等式线性约束存在,则令Aeq=、beq=。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在上面的基础上,在nonlcon参数中提供非线性不等式c(x)或等式ceq(x)。 fmincon函数要求c(x) = 0且ceq(x) = 0。x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 用options参数指定的参数进行最小化。x = fmi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一年级语文下册 第三单元 语文园地配套教学设计 新人教版
- 七年级语文上册 第三单元 11《礼物》教学设计 冀教版
- 三年级道德与法治上册教案(部编版)
- 人教部编版六年级下册鲁滨逊漂流记第一课时教案
- 九年级体育 第17周 第34次课教学设计
- 六年级下科学教案飞速发展的信息技术-青岛版
- 七年级信息技术上学期 第十二课画图软件使用技巧 教学设计
- 2024兵器装备集团中国长安春季校园招聘笔试参考题库附带答案详解
- 九年级物理上册 11.1怎样才叫做功教学设计 (新版)粤教沪版
- 三年级数学上册 二 千克和克第1课时 认识千克教学设计 苏教版
- 自动化生产线运行与维护完整版课件(全)
- 实验试剂耗材供应服务方案
- JJF 1211-2008 激光粒度分析仪校准规范-(高清现行)
- 新部编人教版五年级下册道德与法治期末复习全册知识点汇编
- 赣美版 二年级下册美术 第3课 画房子 课件(12张PPT)
- 土壤酸性磷酸酶活性测定方法
- YAV USB 8Multi多功能采集卡技术手册USB6432
- 二正丁胺MSDS危险化学品安全技术说明书
- 北大刑法分论期末考题甲的一生前传
- 荥阳崔庙镇土地利用总体规划
- 人货电梯基础施工方案图文
评论
0/150
提交评论