- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)