第2讲MATLAB程序设计及其调试_第1页
第2讲MATLAB程序设计及其调试_第2页
第2讲MATLAB程序设计及其调试_第3页
第2讲MATLAB程序设计及其调试_第4页
第2讲MATLAB程序设计及其调试_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 M文件的功能和特点 MATLAB是解释性语言 语法简单 调试容易 人机交互性强 开放性、可扩展性强第第2讲讲MATLAB 程序设计及其调试程序设计及其调试M文件输入窗口!文件输入窗口!222112221222110.753.751.512612120.753.751.5120.54571( ,)0.7575110.54571xxxxxxxxexxp x xexxexx 脚本文件first.m%first.m This is my first example.a=2;b=2;clf;x=-a:0.2:a;y=-b:0.2:b;for i=1:length(y) for j=1:length(x

2、) if x(j)+y(i)1 z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2-1.5*x(j); elseif x(j)+y(i) x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x = 0.5223fval = 0.3974exitflag = 1output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation1) 3x()x( f3例5 在0,5上求下面函数的最

3、小值解:先自定义函数:在MATLAB编辑器中建立M文件为:function f = myfun(x)f = (x-3).2 - 1;保存为myfun.m,然后在命令窗口键入命令: x=fminbnd(myfun,0,5)则结果显示为:x = 3无约束多元函数最小值无约束多元函数最小值多元函数最小值的标准形式为其中:x为向量.命令 利用函数fminsearch求无约束多元函数最小值.函数 fminsearch格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x = fminsearch(fun,x0,options

4、) % options查optimset.x,fval = fminsearch() %最优点的函数值.x,fval,exitflag = fminsearch() % exitflag与单变量情形一致.x,fval,exitflag,output = fminsearch() %output与单变量情形一致.)x( fminxx,x,xxn21222132131xxx10 xx4x2y例6 求 的最小值点.解:X=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2, 0,0)结果为 X = 1.0016 0.8335或在MATLAB编辑器中建

5、立函数文件.function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存为myfun.m,在命令窗口键入 X=fminsearch (myfun, 0,0) 或 X=fminsearch(myfun, 0,0)结果为: X = 1.0016 0.8335有约束的多元函数最小值有约束的多元函数最小值非线性有约束的多元函数的标准形式为:sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数.在MATLAB5.

6、x中,它的求解由函数constr实现.)x( fminx0)x(C0)x(CeqbxAbeqxAequbxlb函数 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,fval = fmincon()x,fval,exitflag = fmincon

7、()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()参数说明:fun为目标函数,它可用前面的方法定义;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的估计C和Ceq,通过指定函数柄来使用,如:x = fmincon(myfun,x0,A,b,Aeq,beq,lb,u

8、b,mycon),先建立非线性约束函数,并保存为mycon.m:function C,Ceq = mycon(x)C = % 计算x处的非线性不等约束的函数值.Ceq = % 计算x处的非线性等式约束的函数值.lambda是Lagrange乘子,它体现哪一个约束有效.output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessian值.例7求下面问题在初始点(0,1)处的最优解21212221x5x2xxxx0 x) 1x(22106x3x221min sub.to 解:约束条件的标准形式为:sub.to 先在MATLAB编辑器中建立非线性约束函数文件

9、: function c, ceq=mycon (x) c=(x(1)-1)2-x(2); ceq= ; %无等式约束.0 x) 1x(2216x3x221然后,在命令窗口键入如下命令或建立M文件:fun=x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2); %目标函数.x0=0 1;A=-2 3; % 线性不等式约束.b=6;Aeq= ; % 无线性等式约束.beq= ;lb= ; % x没有下、上界.ub= ;x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon

10、)则结果为x = 3 4fval = -13exitflag = 1 % 解收敛. output = iterations: 2 funcCount: 9 stepsize: 1 algorithm: medium-scale: SQP, Quasi-Newton, line-search firstorderopt: cgiterations: lambda = lower: 2x1 double % x下界有效情况,通过lambda.lower可查看. upper: 2x1 double % x上界有效情况,为0表示约束无效. eqlin: 0 x1 double %线性等式约束有效情况,

11、不为0表示约束有效. eqnonlin: 0 x1 double %非线性等式约束有效情况. ineqlin: 2.5081e-008 %线性不等式约束有效情况. neqnonlin: 6.1938e-008 %非线性不等式约束有效情况. grad = %目标函数在最小值点的梯度. 1.0e-006 * -0.1776 hessian = %目标函数在最小值点的Hessian值. 1.0000 -0.0000 -0.0000 1.0000二次规划问题二次规划问题二次规划问题(quadratic programming)的标准形式为: sub.to 其中,H、A、Aeq为矩阵,f、b、beq、l

12、b、ub、x为向量其它形式的二次规划问题都可转化为标准形式. MATLAB5.x版中的qp函数已被6.0版中的函数quadprog取代。xfxHx21minbxAbeqxAeqbuxbl函数 quadprog格式 x = quadprog(H,f,A,b) %其中H,f,A,b为标准形中的参数,x为目标函数的最小值.x = quadprog(H,f,A,b,Aeq,beq) %Aeq,beq满足等约束条件.x = quadprog(H,f,A,b,Aeq,beq,lb,ub) % lb,ub分别为解x的下界与上界.x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) %

13、x0为设置的初值x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) % options为指定的优化参数.x,fval = quadprog() %fval为目标函数最优值.x,fval,exitflag = quadprog() % exitflag与线性规划中参数意义相同.x,fval,exitflag,output = quadprog() % output与线性规划中参数意义相同.x,fval,exitflag,output,lambda = quadprog() % lambda与线性规划中参数意义相同 . 3xx) 0, 0(xx0110)x

14、x(213xx)xx( fmin2121212121例8求二次规划的最优解 max f (x1, x2)=x1x2+3 sub. to x1+x2-2=0解:化成标准形式: sub.to x1+x2=2在Matlab中实现如下:H=0,-1;-1,0;f=0;0;Aeq=1 1;b=2;x,fval,exitflag,output,lambda = quadprog(H,f, , ,Aeq,b)结果为:x = 1.0000 1.0000fval =-1.0000exitflag =4output = iterations: 1 algorithm: large-scale: projectiv

15、e preconditioned conjugate gradients f irstorderopt: 0 cgiterations: 1 message: Optimization terminated: local minimum found; the solution is singular. lambda = eqlin: 1.0000 ineqlin: lower: upper: 极小化极大(Minmax)问题)x(FmaxminiFxi0)x(C0)x(CeqbxAbeqxAequbxlbsub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x

16、)和F(x)是返回向量的函数,F(x)、C(x)、 Ceq(x) 可以是非线性函数.函数 fminimax格式 x = fminimax(fun,x0)x = fminimax(fun,x0,A,b)x = fminimax(fun,x0,A,b,Aeq,beq)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval,maxfval = fminimax()x,f

17、val,maxfval,exitflag = fminimax()x,fval,maxfval,exitflag,output = fminimax()x,fval,maxfval,exitflag,output,lambda = fminimax()例9 求下列函数最大值的最小化问题其中:)x(f , )x(f , )x(f , )x(f , )x(f54321304x40 x48xx2)x(f212221122222x3x)x(f18x3x)x(f213214xx)x(f8xx)x(f215解:先建立目标函数文件,并保存为myfun.m:function f = myfun(x)f(1)= 2*x(1)2+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论