资源描述:
《数学实验作业七》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数学实验作业七题目:P200.2);6)日期:2003-4-9【实验目的】:1、掌握MATLAB优化工具箱的基本用法,对不同算法进行初步分析、比较。2、练习实际问题的非线性最小二乘拟合。【实验内容】:二:求解,初值(-1,1),对不同算法的结果进行分析、比较。【模型分析】:首先画出函数f=的图像和等高线:可以看到:在[0.5,-1]附近为一个“凹地”,最小值应在该凹地中取得。另外,从(-1,1)到此凹地为一与Rosenbrock函数类似的狭长通道,不利于沿负梯度方向下降。可以想象,该函数具有与Rosenbrock函数
2、类似的性质。【MATLAB源程序】比较程序如下:%数学实验作业二.1-dfunctionf=ch72fun(x);%第7章第2题的函数f=exp(x(1)).*(4*x(1).^2+2*x(2).^2+4*x(1).*x(2)+2.*x(2)+1);%ch72.m%第7章第2题X0=[-1,1];%赋初值%BFGS,混合二三次插值opt1=optimset('TolX',1e-6,'TolFun',1e-6,'MaxIter',1000);[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72
3、fun,X0,opt1)%BFGS,三次插值opt2=optimset(opt1,'LineSearchType','cubicpoly');[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt2)%DFP,混合二三次插值opt3=optimset(opt1,'HessUpdate','dfp');[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt3)%DFP,三次插值opt4=optimset(opt3,'LineSear
4、chType','cubicpoly');[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt4)%最速下降,混合二三次插值opt5=optimset(opt1,'HessUpdate','steepdesc');[X1,FVAL,EXITFLAG,OUTPUT]=FMINUNC(@ch72fun,X0,opt5)【MATLAB运行结果】:结果为:搜索方向步长搜索最优解最优值迭代次数BFGSquadcubic(0.50000349867429-1.000008720584
5、46)1.302793198827844e-0107BFGScubicpoly(0.50000550257798-1.00000588930458)1.003340139037585e-01022DFPquadcubic(0.50005027832388-0.99990715185660)7.588817567829805e-0086DFPcubicpoly(0.50000001176327-1.00000037427431)4.334501663087731e-01312最速下降quadcubic(0.499924
6、19845803-0.99988138702904)2.498840793355238e-00812所以可以得到本题的解析解:x=(0.5,-1),f=0。【结果分析】:观察上面的运算结果可以看出:BFGS和混合二三次插值(Matlab默认值)的性能是最好的,其精度较高,迭代次数少;DFP和三次插值的精度最高,但是其迭代次数相对较多。DFP和混合二三次插值的迭代次数最少,但是其精度是最低的。另外最速下降法也能得出结果,而不是像Rosenbrock函数那样不收敛。六:《中国统计年鉴(1995)》给出下表的数据,试据此拟
7、合生产函数中的参数。如何看待用最小二乘法和非线性最小二乘法拟合的结果。年份总产值(万亿元)资金(万亿元)劳动力(亿人)19840.71710.24694.817919850.89640.33864.987319861.02020.38465.128219871.19620.43225.278319881.49280.54955.433419891.69090.60955.532919901.85310.64445.674019912.16180.75175.836019922.66350.96365.94321993
8、3.45151.49985.022019944.50061.89446.1470第一问:模型建立:本题考虑用非线性拟合最小二乘拟合方法,来求解生产函数的未知系数。生产函数为以系数为三个变量,列写函数再运用leastsq程序,设立初值,即可求出三个系数的数值解。模型求解:用Matlab作非线性最小二乘拟合,编程语句如下:%ch7.6-(1)fun