版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MATLAB基础及求解非线性规划经济管理学院:李继红1 Matlab简介及操作环境简介及操作环境由美国由美国 DOCTORCLEVER MOLER 于于 1980 年年开始研制并于开始研制并于1984年推出正式版本。年推出正式版本。以后以后陆续推陆续推出了出了4.0,4.2和和5.0版本,版本,1999年初推出了功能更年初推出了功能更为强大的为强大的5.3版本,版本,2001年推出年推出6.1版本,版本,2003年年推出了推出了6.5版本。版本。2004年年6月正式推出月正式推出7.0版本。版本。MATLAB是建立在是建立在 C 语言基础上的高级语言,语言基础上的高级语言,并建立了自已独特的语
2、言环境。并建立了自已独特的语言环境。 1.1 Matlab简介简介MATLAB(MATrix LABoratory)的基本含义是矩阵实验室,)的基本含义是矩阵实验室,它是由美国它是由美国MathWorks公司研制开发的一套高性能的集数值计算、信息处理、公司研制开发的一套高性能的集数值计算、信息处理、图形显示等于一体的可视化数学工具软件。它是建立在向量、图形显示等于一体的可视化数学工具软件。它是建立在向量、数组和矩阵基础之上的,除了基本的数值计算、数据处理、数组和矩阵基础之上的,除了基本的数值计算、数据处理、图形显示等功能之外,还包含功能强大的多个图形显示等功能之外,还包含功能强大的多个“工具箱
3、工具箱”,如优化工具箱(如优化工具箱(optimization toolbox)、统计工具箱、样条)、统计工具箱、样条函数工具箱和数据拟合工具箱等都是优化计算的有力工具。函数工具箱和数据拟合工具箱等都是优化计算的有力工具。MATLAB程序设计语言简介程序设计语言简介MATLAB,Matrix Laboratory的缩写,是由的缩写,是由Mathworks公司开公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。阵运算能力。与大家常用的与大家常用的Fortran和和C等高级语言相比,等高级语言相比,MATLAB的语法规
4、的语法规则更简单,更贴近人的思维方式,被称之为则更简单,更贴近人的思维方式,被称之为“草稿纸式的语言草稿纸式的语言”。截至目前,截至目前,MATLAB已经发展到已经发展到12.1版,版, 适用于所有适用于所有32位的位的Windows操作系统,操作系统, 按按NTFS(NT文件系统文件系统)格式下完全安装约需格式下完全安装约需 850 MB。MATLAB软件主要由主包、仿真系统和工具箱三大部软件主要由主包、仿真系统和工具箱三大部分组成。分组成。 MATLABMATLAB的安装与卸载的安装与卸载MATLAB软件在用户接口设计上具有较强的亲和力,软件在用户接口设计上具有较强的亲和力,其安装过程比较
5、典型,其安装过程比较典型, 直接运行光盘中的安装向导直接运行光盘中的安装向导支撑程序支撑程序SETUP.exe, 按其提示一步步选择即可。按其提示一步步选择即可。MATLAB自身带有卸载程序,在其安装目录下有自身带有卸载程序,在其安装目录下有uninstall子目录,运行该目录下的子目录,运行该目录下的uninstall.exe即可;即可; 也可以通过也可以通过Windows系统的安装卸载程序进行卸载。系统的安装卸载程序进行卸载。 MATLABMATLAB的启动与退出的启动与退出MATLAB安装完成后,会自动在安装完成后,会自动在Windows桌面桌面上生成一个快捷方式,上生成一个快捷方式,
6、它是指向安装目录下它是指向安装目录下binwin32matlab.exe的链接,的链接, 双击它即可来到双击它即可来到MATLAB集成环境的基本窗口,通常称之为命令集成环境的基本窗口,通常称之为命令窗口。窗口。 MATLAB的退出与普通的退出与普通WIN32的程序一样,的程序一样, 值值得一提的是它有一个自身专有的快捷键得一提的是它有一个自身专有的快捷键Ctrl+Q。 1.2 Matlab的语言环境的语言环境1、Matlab的工作视窗的工作视窗/界面界面A、命令窗口命令窗口 (command window)B、编辑编辑/调节器窗口调节器窗口(editor/debugger)C、图形输出窗口图形
7、输出窗口(figure)D、simulink集成编程窗口集成编程窗口命令窗口命令窗口提供给用户使用管提供给用户使用管理功能的人机界面理功能的人机界面主要项目:NewOpenPreferenceSet path编辑窗口编辑窗口提供给用户编程、阅读和调提供给用户编程、阅读和调试程序的窗口试程序的窗口图形输出窗口图形输出窗口实现图形的可视化、编辑图形的注释和对图形的编辑实现图形的可视化、编辑图形的注释和对图形的编辑Simulink窗口窗口应用框图编程的方法,实现对系统的仿真,并应用框图编程的方法,实现对系统的仿真,并以图形方式表示。以图形方式表示。图1.7 Sinulink模块库浏览器图1.8 新建
8、Sinulink模型窗口2 Matlab基本特性基本特性MATLAB语言的规则十分简单,是一种表达语言的规则十分简单,是一种表达式语言,其语句格式类似于数学式子。式语言,其语句格式类似于数学式子。其管理的对象是矩阵,标量其管理的对象是矩阵,标量(数量数量)是作为是作为11的矩阵来处理的。与数学术语一样,仅有一行的矩阵来处理的。与数学术语一样,仅有一行或一列的矩阵作为向量来处理。或一列的矩阵作为向量来处理。 2.1 简单的数学运算简单的数学运算在在MATLAB命令窗口中,可以直接输入数学运命令窗口中,可以直接输入数学运算式子并回车,即能够显示出计算结果,例如,算式子并回车,即能够显示出计算结果,
9、例如,输入:输入: 4+2-5*6+8/4 显示结果为:显示结果为: ans = -22其中变量其中变量ans(answer的缩写的缩写)为为MATLAB预设置预设置的一个变量。的一个变量。 另一种方式是把计算所得的值赋给一个另一种方式是把计算所得的值赋给一个MATLAB变量,变量,例如:例如:a1=52a1 = 25又例如:又例如:bz=10+a1bz = 35 这样创建了两个这样创建了两个MATLAB变量变量a1和和bz,每一个变量都显每一个变量都显示出一个计算结果。示出一个计算结果。 2.9 常用的基本数学函数常用的基本数学函数 MATLAB中,数学公式大多数可以用数学函数的方中,数学公
10、式大多数可以用数学函数的方式来表示。式来表示。要注意的是,三角函数的计算只采用弧度的操作,要注意的是,三角函数的计算只采用弧度的操作,角度必须经过弧度的换算才能使用。例如:角度必须经过弧度的换算才能使用。例如:sin(90sin(90) ),只能表示为:只能表示为:sin(pi/2)sin(pi/2),其中其中pipi为圆为圆周率周率。 2.10 M文件文件 在命令窗口模式下键入一行命令立即执行,程序在命令窗口模式下键入一行命令立即执行,程序可读性差且难以存储可读性差且难以存储编成可存储的程序文编成可存储的程序文本本m文件文件M文件名的后缀为文件名的后缀为m。MATLAB语言环境下能语言环境下
11、能执行的文件是以后缀为执行的文件是以后缀为m的文件的文件Matlab本身含有很多本身含有很多.m文件文件2.10.1 M文件文件的编制的编制 1 1、打开编辑窗口、打开编辑窗口2 2、编制一个多项式方程求根的程序:、编制一个多项式方程求根的程序:A=4 5 6 8 % 即即 A=4x3+5x2+6x+8P=roots(A)3 3、存盘(文件名不得与已存在的存盘(文件名不得与已存在的m m文件相文件相同)同)2.10.2 M文件文件的执行的执行 在在MATLABMATLAB命令窗口下直接键入文件名并按回车键即可命令窗口下直接键入文件名并按回车键即可 2.10.3 M文件文件的打开的打开 2.10
12、.4 M文件文件的编辑修改的编辑修改 2.10.5 M文件文件变量的工作空间变量的工作空间M M文件变量的工作空间就是文件变量的工作空间就是MATLABMATLAB的工作空间。若变量在的工作空间。若变量在MATLABMATLAB工作空间中已存在,其变量的值可以被其他的工作空间中已存在,其变量的值可以被其他的M M文件文件使用。但要特别注意在使用。但要特别注意在MATLABMATLAB工作空间中该变量的大小。工作空间中该变量的大小。 2.10.6 M文件文件的调试的调试MATLABMATLAB在执行在执行M M文件过程中,若一旦发现有语法错误,将在文件过程中,若一旦发现有语法错误,将在MATLA
13、BMATLAB命令窗口中显示其错误类型,还指出错误的行号,并命令窗口中显示其错误类型,还指出错误的行号,并停止程序的执行,用户可以根据所提供的信息来修改程序。停止程序的执行,用户可以根据所提供的信息来修改程序。另外,在另外,在MATLABMATLAB编辑编辑/调试器窗口的工具栏和菜单中,可以通调试器窗口的工具栏和菜单中,可以通过设置程序断点,并使程序单步执行来调试程序,工具栏中过设置程序断点,并使程序单步执行来调试程序,工具栏中有有关调试程序的图标。有有关调试程序的图标。3 数组、矩阵的基本运算数组、矩阵的基本运算MATLAB (MATrix LABoratory) 是一种是一种以以矩阵作为基
14、本数据结构、以矩阵运算为矩阵作为基本数据结构、以矩阵运算为基础的科学计算软件基础的科学计算软件所有变量和数据都可看成为矩阵变量和矩阵数据。所有变量和数据都可看成为矩阵变量和矩阵数据。应用应用MATLAB语言编程时,尤其要注意矩阵的语言编程时,尤其要注意矩阵的向量的维数问题。标量可以看作为向量的维数问题。标量可以看作为11的矩阵。的矩阵。 数组与矩阵元素的输入数组与矩阵元素的输入 用例子来说明:设用例子来说明:设A矩阵为矩阵为33矩阵,其数据为:矩阵,其数据为: 1 2 3 4 5 6 7 8 9在在MATLAB中,输入方法有几种:中,输入方法有几种:例例 A=1 2 3;4 5 6;7 8 9
15、 也可这样输入:也可这样输入: A=1, 2 3 4, 5, 6 7 8 9矩阵元素之间可用逗号矩阵元素之间可用逗号, 或空格或空格 隔开,隔开,行与行之间用分号行与行之间用分号;隔开;隔开;语句结尾:逗号显示结果,分号不显示结果语句结尾:逗号显示结果,分号不显示结果 例例 x=3,4,2;y=6 7 2;z=x*y z = 50 又例又例 z=x*y z = 18 21 6 24 28 8 12 14 4加:加:两矩阵阶数相同两矩阵阶数相同 减:两矩阵阶数相同减:两矩阵阶数相同 乘:第一个矩阵的列数等于第二个矩阵的行数,乘:第一个矩阵的列数等于第二个矩阵的行数,即内阶数相等即内阶数相等 除:
16、逆阵除:逆阵A A-1-1 invinv(A A),),矩阵行列式矩阵行列式 det(Adet(A) ),左除,右除,行列式不为左除,右除,行列式不为0 0 矩阵运算:矩阵运算:4 关系与逻辑运算关系与逻辑运算关系运算:关系运算: = = =逻辑运算:逻辑运算: & | xor5 向量与多项式向量与多项式在在MATLAB中向量的表达和一维数组的表示中向量的表达和一维数组的表示形式一致,而多项式也可以用一个行向量来表形式一致,而多项式也可以用一个行向量来表示,即将多项式的系数按变量的降幂排列。示,即将多项式的系数按变量的降幂排列。 求 y=x3+2.5x2+x+10=0 的根。p=1 2
17、.5 1 10; % 多项式方程的MATLAB表达x=roots(p) % root 6 控制流与若干控制命令控制流与若干控制命令控制流语句有三种结构:控制流语句有三种结构:forfor循环,循环,whilewhile循环,循环,ififelseelseendend,switch-case结构等。控制命令主要介绍结构等。控制命令主要介绍breakbreak、pausepause、inputinput、keyboardkeyboard、debugdebug等命令。等命令。 6.1 for for循环循环 1、for循环循环For循环可以按指定的次数重复执行一系列语循环可以按指定的次数重复执行一系
18、列语句。句。For循环的常见结构:循环的常见结构:for 变量变量 =表达式表达式 循环语句循环语句 end如:如:for k=初值初值: 增值增值: 终值终值 这里循环语句可以是一条或这里循环语句可以是一条或多条,并且可以是变量的函多条,并且可以是变量的函数数li1_6_1.m mzmfor.mclear allN=input(请输入矩阵的维数 N:);for I = 1:N, for J = 1:N, A(I,J) = 1/(I+J-1); endend在用在用for语句实语句实现多重循环时,现多重循环时,for和和end必须必须成对出现!成对出现!例:请分析一下本段程序共循环多少次?请分
19、析一下本段程序共循环多少次? % mzmfor2.mfor n=1:5 x(n)=sin(n*pi/10); n=10;end For循环不能用循环不能用For循环内新赋值循环变循环内新赋值循环变量量n来终止。因此本来终止。因此本段中循环次数仍为五段中循环次数仍为五次!次! 6.2 while循环循环 vWhile 循环以循环以不定的次数不定的次数执行一条或多条语句,执行一条或多条语句,当条件不再满足时退出循环。当条件不再满足时退出循环。While循环的一般形循环的一般形式是:式是:vwhile 条件式条件式 语句;语句; endv只要在表达式里的所有元素为真,就执行只要在表达式里的所有元素为
20、真,就执行while和和end 语语句之间的运算式。就是说,只要条件式成立,运算式就会句之间的运算式。就是说,只要条件式成立,运算式就会一再被执行。一再被执行。While示例示例循环条件是条循环条件是条件表达式的值件表达式的值为真为真x=input(x=);while x=10 y=x*5 x=x-5end6.3 if-else-end分支语句分支语句 v最简单的If-else-end结构是:vif 条件式; v 循环体语句; vendv如果在表达式中的所有元素为真(非零),那么就执行if和end语言之间的语句。6.4 switch-case语句语句 一般switch-case语句格式为:sw
21、itch numcase n1commandcase n2commandcase n3command.otherwiseCommandli1_6_4.m一一. 绘制二维图形绘制二维图形1、简单的二维绘图命令(plot)Plot函数是将各个数据点通过连折线的方式来绘制二维图形的。其格式有以下几种。plot(y) %绘制向量y的曲线plot(x,y) %绘制纵坐标为向量y横坐标为向量x的曲线 %x,y的维数应相同。多条曲线的绘制 plot(x1,y1,x2,y2,)7 数据的可视化数据的可视化二、绘制三维图形二、绘制三维图形1、三维曲线的基本绘图命令、三维曲线的基本绘图命令基本格式:基本格式:pl
22、ot3(x,y,z,s) plot3(x1,y1,z1,s1,x2,y2,z2,s2,) 例:例:t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t);plot3命令将绘制二维图形的函数命令将绘制二维图形的函数plot的特性扩展到三维空间。函的特性扩展到三维空间。函数格式除了包括第三维的信息(比如数格式除了包括第三维的信息(比如Z方向)之外,与二维函数方向)之外,与二维函数plot相同。相同。2.三维网线图的绘制步骤:1)栅格数据点的产生命令:meshgrid(x,y)2)绘制三维网格命令:mesh(x,y,z)绘制三维网线图程序:x=-8:0.5:8;y=x;X
23、,Y=meshgrid(x,y);R=sqrt(X.2+Y.2)+eps;Z=sin(R)./R;mesh(X,Y,Z)MATLAB求解非线性规划第一部分:无约束极值问题第一部分:无约束极值问题 单变量函数求最小值的标准形式为单变量函数求最小值的标准形式为 s.t )(minxfx21xxx 函数函数 fminbnd格式格式 x = fminbnd(fun,x1,x2) %返回自变量返回自变量x在区间在区间上函数上函数fun取最小值时取最小值时x值,值,fun为目标函数的表达式字符串为目标函数的表达式字符串或或MATLAB自定义函数的函数柄。自定义函数的函数柄。 函数函数fminbnd的算法基
24、于黄金分割法和二次插值法,它要求的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。目标函数必须是连续函数,并可能只给出局部最优解。 x = fminbnd(fun,x1,x2,options) % options为指定优化参为指定优化参数选项数选项 x,fval = fminbnd() % fval为目标函数的最小值为目标函数的最小值 x,fval,exitflag = fminbnd() %xitflag为终止迭代的条为终止迭代的条件件 x,fval,exitflag,output = fminbnd() % output为优化信为优化信息息 说明说明
25、若参数若参数exitflag0,表示函数收敛于,表示函数收敛于x,若,若exitflag=0,表示超过函数估计值或迭代的最大数字,表示超过函数估计值或迭代的最大数字,exitflag0表示函数不收敛于表示函数不收敛于x;若参数;若参数output=iterations表示迭代次数,表示迭代次数,output=funccount表表示函数赋值次数,示函数赋值次数,output=algorithm表示所使用的算法。表示所使用的算法。 例例1 计算下面函数在区间计算下面函数在区间(0,1)内的最小值。内的最小值。xexxxxxflogcos)(3 解:解:x,fval,exitflag,output
26、 =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 interpolation 主程序为主程序为ex2.m:ex2.m: f=2 f=2* *exp(-x).exp(-x).* *sin(xsin(x); ); ex2.mex2.m fplot(f,0,8); % fplot(f,0,8); %作图语句作图语句 xmin,yminxmin,
27、ymin=fminbndfminbnd (f, 0,8) (f, 0,8) f1=-2 f1=-2* *exp(-x).exp(-x).* *sin(xsin(x);); xmax,ymaxxmax,ymax=fminbndfminbnd (f1, 0,8) (f1, 0,8) 二次规划可以直接利用二次规划可以直接利用 Matlab 来求解。来求解。Matlab 中二次规划函数为:quadprog( )。其调用格式为x=quadprog(H,C,A,b);x=quadprog(H,C,A,b,Aeq,beq);x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);x=quad
28、prog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0,options);x,fval=quaprog(.);x,fval,exitflag=quaprog(.);x,fval,exitflag,output=quaprog(.);47例3 min f(x1,x2)=-2x1-6x2+x12-2x1x2+2x22 s.t. x1+x22 -x1+2x22 x10, x20 1、写成标准形式: 2、 输入命令: H=1 -1; -1 2; c=-2 ;-6;A=1 1; -1 2;b=2;2; Matl
29、ab:youh2.m Aeq=;beq=; VLB=0;0;VUB=; x,z=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3、运算结果为: x =0.6667 1.3333 z = -8.2222212121622 11- 1 ),(minxxxxxxzT212100222 11 1 xxxxs.t. 用用MATLAB解无约束优化问题解无约束优化问题 设无约束优化问题(一元或多元函数)标准形为min( )f x常用格式如下:x=fminunc(fun,x0);或x=fminsearch(fun,x0);x= fminunc (fun,x0,options); 或x=fm
30、insearch(fun,x0, options);x,fval= fminunc (); 或x,fval=fminsearch()x,fval,exitflag=fminunc(); 或x,fval,exitflag=fminsearch();x,fval,exitflag,output= fminunc(); 或x,fval,exitflag,output= fminsearch(); 说明:fminsearch是用单纯形法寻优。而对于fminunc的算法: (1)fminunc为无约束优化提供了大型优化和中型优化算法,由于options中的参数LargeScale控制; LargeSca
31、le=on(默认值),使用大型算法; LargeScale=off(默认值),使用中型算法。(2)fminunc为中型优化算法的搜索方向提供了4种算法,由options中的参数HessUpdate控制:HessUpdate=bfgs(默认值),拟牛顿法的BFGS公式;HessUpdate=dfp,拟牛顿法的DFP公式;HessUpdate=steepdesc,最速下降法;(3)fminunc为中型优化算法的步长以为搜索提供了两种算法,由options中的参数LineSearchType控制:LineSearchType=quadcubic(默认值),混合的二次和三次多项式插值;LineSear
32、chType=cubicpoly, 三次多项式插值。例例4用Matlab解多元约束优化问题212122214102minxxxxxxf有约束极值问题的有约束极值问题的Matlab求解求解一、 一般非线性规划一般非线性规划标准形为:其中: 均为非线性函数组成的向量VUBxVLBxCeqxCBeqxAeqbAxxf0)(0)()(min)(),(xCeqxC用Matlab求解上述向题,基本步骤为:(1)首先建立M文件funm,定义目标函数f(x): function ffun(x); ff(x);)(),(xCeqxC (2)若约束条件中有非线性约束: ,则建立M文件nonlcon.m,定义函数:
33、function C,Ceq=nonlcon(x)C=Ceq=3. 建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下: (1) x=fmincon(fun,X0,A,b) (2) x=fmincon(fun,X0,A,b,Aeq,beq) (3) x=fmincon(fun,X0,A,b, Aeq,beq,VLB,VUB) (4) x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon)(5)x=fmincon(fun,X0,A,b,Aeq,beq,VLB,VUB,nonlcon,options) (6) x,fval= fmincon(.) (7) x,fval,exitflag= fmincon(.) (8)x,fval,exitflag,output= fmincon(.)输出极值点M文件迭代的初值参数说明变量上下限54注意:1 fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。2 fmincon函数的中型算法使用的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度个人珠宝首饰分期购买合同6篇
- 二零二五年度棉被产品售后服务协议4篇
- 2025年度个人住宅地下室防水防潮合同范本4篇
- 二零二五年度美团商家入驻信息安全管理合同4篇
- 2025年个人购房贷款利率变动通知合同2篇
- 建筑设计协调合同(2篇)
- 支模超高施工方案
- 施工方案五必须
- 2025年销售部劳动合同加班补贴范本
- 2025年销售经理岗位竞聘协议范本2篇
- 手术室护士的职业暴露及防护措施护理课件
- 水果店选址分析报告
- 人员测评与选拔的主要方法课件
- 智慧审计方案
- 企业信息化建设现状与未来规划汇报
- 工程开工报审表及工程开工报审表、开工报告
- 音乐协会管理制度
- 2024年水发集团有限公司招聘笔试参考题库含答案解析
- 阿米巴落地实操方案
- 药物制剂工(三级)理论试题题库及答案
- 高强度间歇训练(HIIT)对代谢健康的长期影响
评论
0/150
提交评论