实验13多元函数最值与非线性最小二乘法..doc

实验13多元函数最值与非线性最小二乘法..doc

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

实验13 多元函数最值 与非线性最小二乘法 实验背景 在日常生活和科学研究中,人们经常会遇到这样一类问题:在某些条件下,寻求某一数量指标的最大或最小值。例如:在资源有限的情况下,制造尺寸最大的箱子;如何根据手中的资金情况确定收益最大的投资方向等等。这类问题用数学语言描述就是函数的最值问题,也称为最优化问题。 在最优化问题中,拉格朗日乘数法是一种求解条件极值的方法。它将含有n个变量与m个约束条件的优化问题,通过引入拉格朗日乘子,转化为含有n+m个变量的方程组的极值问题,其变量不受约束。它的一般提法如下: 要求多元函数在附加条件在的极值。 为此,我们先做拉格朗日函数 其中均为参数(即拉格朗日乘子),求其一阶偏导数,使之为零,然后与附加条件中的方程联立起来求解,设得到的方程组为 如果上述方程组存在一组解,则这组解就有可能是原问题的极值点。显然,利用这种方法来求解多元函数的最值有时候不太容易,MATLAB中给出了多个命令,用来求解各种无约束优化问题和约束优化问题。 优化问题的一个重要应用就是数据拟合问题。根据一组数据来拟合一个已知函数,其中,为待定系数。我们希望函数左右两端之差越小越好,为此,我们定义一个误差函数,来求取该函数的最小值,从而得到了一个优化模型。当是关于的非线性函数时,称为非线性最小二乘拟合,这种方法就是非线性最小二乘法。 软件工具 1、无约束优化问题 多元无约束优化问题的标准形式: 利用fminunc和fminsearch都可以求解此类问题,两种命令采用的算法稍有不同:fminunc采用的是拟牛顿法或置信域方法,fminsearch采用的是单纯性有哪些信誉好的足球投注网站法。最一般的调用方式分别为: [x,fv,ef,out]=fminsearch(fun,x0,opt,P1,P2…) [x,fv,ef,out]=fminunc(fun,x0,opt,P1,P2…) 其中,fun是函数名,x0是初始解,,这两个是必须输入的参数。opt是控制参数,不指定时将采用缺省值。P1,P2,…是传给fun函数的参数(如果需要的话)。当输入参数列表中的某个中间输入参数缺省时,需用[]占据其位置。 输出列表中,x是最优解,fv是x点处的目标函数值。ef是程序停止的原因:ef0,表示目标函数收敛到解x处;ef=0,表示已达函数评价或迭代的最大次数;ef0,表示目标函数不收敛。out是包含优化结果信息的结构变量。 另外,fminbnd还可以求解定区间上单变量函数的最小值点,调用方式为 [x,fv,ef,out]=fminbnd(fun,z1,x2,opt,P1,P2…) 其中,x1,x2分别为区间的上下界。 例1:求解min 解:先编写M-文件fun1.m: function f=fun1(x,a,b) f=x(1)^2/a+x(2)^2/b; 取初始值[1,0],输入程序 x0=[1 0]; [x,fv]=fminsearch(‘fun1’,x0,[],2,3) 输出结果: x= 1.0e-003 *( 0.0312 0.9298) fv = 2.8865e-007 若采用命令fminunc:[x,fv]=fminunc(‘fun1’,x0,[],2,3) 输出结果: x=0 0 fv=0 2、约束优化问题 (1)线性规划 对于如下形式的线性规划: 其求解命令为linprog,其一般的调用方式为 [x,fv,ef,out]=linprog(c,A,b,Aeq,beq,VL,VU,x0,opt) 其中x,A,b,Aeq,beq,VL,VU的含义如模型所示,x0为初始解;opt为程序的各种控制参数。 例2 求解 解 需先将上述问题转化为标准形式再进行求解,改写为 编程如下:c=-[4 9]; A=[-1 1;1 -2;3 2]; b=[2 2 14]; VL=[0,0] [x,fv,ef,out]=linprog(c,A,b,[],[],VL) 得到最优解为,(即原问题的最大值为44),ef=1(收敛)。 (2)非线性约束 非线性约束的标准形式: 与线性约束相比,形式上多了后面两个式子,这也是关于变量X的非线性约束。MATLAB中提供了fmincon()函数,专门来求解此类约束问题。一般调用方式如下: [x,fv,ef,out]=fmincon (fun,x0,A,b,Aeq,beq,VL,VU,CF,opt,P1,P2,…) 这里CF是给非线性约束函数写的M函数,其他参数的含义与前面相同。 例3 求解下列约束优化问题 解:先编写M文件fun3.m function f=fun3(x) f=1000-x(1)^2-2*x(2)^2-x(3)^2-x(1)*x(2)-x(1)*

文档评论(0)

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

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

1亿VIP精品文档

相关文档