实验MATLAB优化工具箱doc.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验MATLAB优化工具箱doc

实验报告实验目的和要求 1、掌握Matlab的优化方法; 2、了解Matlab 的基本优化命令; 实验预备知识 按下述介绍的步骤,练习并掌握使用matlab的优化方法。 开发MATLAB软件的初衷只是为了方便矩阵运算,随着其作为商业软件的推广,它不断吸收各学科各领域权威人士编写的实用程序,形成了一系列规模庞大、覆盖面极广的工具箱(Toolbox), 如优化、图形处理、信号处理、神经网络、小波分析、概率统计、偏微分方程、系统识别、鲁棒控制、模糊逻辑等工具箱,极大地方便了我们进行科学研究和工程应用。由于数学建模中很多问题都可以转化为优化问题,本节我们简单地介绍一下优化工具箱(Optimization Toolbox)中的部分函数,为大家今后熟练使用MATLAB各工具箱函数奠定基础。 函数fminbnd是用来寻找单变量函数在固定区间内的最小值点及最小值,标准数学模型为: s.t. (s.t.为subject to的缩写,其引导的部分称为约束条件;“s.t.”之前需我们寻找最小值的函数一般称为目标函数)。MATLAB各工具箱的每个函数,包括这里的优化工具箱函数,都有多种不同的调用格式。本节中我们只介绍常用的调用格式,其它调用格式请使用在线帮助系统查询。 函数fminbnd最常用的调用格式为: [x,fval] = fminbnd(fun,x1,x2) %返回函数fun在区间上的最小值点x和对应的最小值fval,fun为目标函数的文件名句柄或目标函数的表达式字符串。 如求解函数在区间内的最小值及最小值点,使用如下命令即可: [x,fval]=fminbnd(@sin,0,2*pi) %符号“@”表明目标函数为MATLAB自定义的正弦函数sin.m。 x = 4.7124 %最小值点赋值给x。 fval = -1.0000 %最小值赋值给fval。 如果目标函数并不是MATLAB自定义的函数,我们需要首先定义一个函数M文件,以该文件的名称来代替上述命令行中的“sin”部分。如我们希望求出在(-3,2)内的最小值及最小值点,我们首先编写目标函数的函数M文件opt1.m: function f=myfun(x) %编写函数M文件时,此行的”myfun”并不一定与文件名相同。 f=(log(x^2+1))/x; 然后调用fminbnd函数: [x,fval]=fminbnd(@opt1,-3,2) %注意此处使用“opt1”而不是“myfun”。 x = -1.9803 fval = -0.8047 如果目标函数的表达式较为简单,我们也可以使用表达式的字符串而不必编写目标函数。如上例我们也可以使用[x,fval]=fminbnd((log(x^2+1))/x,-3,2)实现。 fminsearch和fminunc都是用来求无约束多元函数的最小值的函数,标准数学模型为: 。两函数的调用格式相同,常用格式为: [x,fval] = fminsearch(fun,x0) %从初值x0开始搜索函数fun的最小值点和对应的最小值,并返回最小值点x和对应的最小值fval;x0需事先给定,格式同自变量x;fun同前。 [x,fval] = fminunc(fun,x0) %同fminsearch。 当目标函数的阶数大于2时,使用fminunc比fminsearch更有效,但当目标函数高度不连续时,使用fminsearch效果较好。如我们希望求出的最小值,首先编写目标函数的函数M文件opt2.m: function f=myfun(x) %注意此处只有一个形式参数x,形参可以是向量或矩阵。 f=(exp(x(1)))*(4*x(1)^2+2*x(2)^2+3*x(1)*x(2)+2*x(2)+3); 然后调用fminsearch或finunc函数: [x,fval]=fminunc(@opt2,[0,0]) %从初值[0,0]开始搜索最小值点。 x = -0.2941 -0.2791 fval = 2.3771 [x,fval]=fminsearch(@opt2,[0,0]) %从初值[0,0]开始搜索最小值点。 x = -0.2936 -0.2798 fval = 2.3771 可以看到虽然两函数均从[0,0]开始搜索,得到的最小值点却不同,这是由于两函数各自的搜索方向不同造成的,这也说明这两个函数可能只能得到初值点附近的局部最小值(点),而不一定得到全局最小值(点)。事实上,前述

文档评论(0)

ipad0b + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档