大学数学实验七_无约束优化
- 格式:pdf
- 大小:1.24 MB
- 文档页数:21
实验6无约束优化分1黄浩43实验目的1. 掌握用MATLAB优化工具箱的基本用法,对不同算法进行初步分析、比较2. 练习用无约束优化方法建立和求解实际问题模型(包括非线性最小二乘拟合)。
二、实验内容1. 《数学实验》第二版(问题2.1)问题叙述:取不同的初值计算非线性规划:尽可能求出所有局部极小点,进而找出全局极小点,并对不同算法(搜索方向、步长搜索、数值梯度与分析梯度等)的结果进行分析、比较。
实验过程:首先绘制这个函数的三维图形以及等高线(程序见四.1),结果如下:s M tn0-”19 A8 A1G \ 5 -14 -13 \ 2 A1通过观察这两幅图,可以得到,x2确定时,x1越负,函数值越大,x1确定时,x2绝对值越大,函数值越大。
但对于x1正向偏离0的情况,并没有很好的反映,于是扩大绘图范围,做出下图(程序见四.2):-1 -10由上面两幅图可见,方程像是一个四角被捏起的花布,而且z的最小值为0< 因此只要求解该方程的零点,即得到了方程的局部极小点,且若将原方程变形为:我们容易发现,该方程的零点为:x2=0或x1=0或x1=1或在求解零点之前,先针对一个零点,不妨用x1=1, x2=1,分析不同算法的优劣。
在matlab的无约束优化中,可以使用fminumc和fminsearch两种函数,搜索方向的算法有BFGS 公式、DFP公式和最速下降法三种(书中还提到的Gill-Murray 公式在matlab中已经不再使用),步长的一维搜索有混合二次三次多项式插值和三次多项式插值两种方法,另外,在求解函数梯度是也有数值方法和分析方法两种。
在对上述四类算法因素进行分析时,我们采用控制变量法,每次只保持一种或两种算法因素改变,分析它的精度及效率。
(一)分析fminumc与fminsearch两种方法的精度及效率选择初值为x1=0.8,x2=0.8,使用fminunc和fminsearch的默认算法及控制参数,输出结果如下(程序见四.3、四.4):因为精确解为x1=1, z=0,我们便可以比较出不同算法的精度。
无约束优化一、实验目的1、了解无约束优化的基本算法;2、掌握Matlab优化工具箱的基本用法;3、掌握用Matlab求解无约束优化实际问题。
二、实验要求能够掌握Matlab优化工具箱中fminunc,fminearch,lqnonlin,lqcurvefit的基本用法,能够对控制参数进行设置,能够对不同算法进行选择和比较。
fminunc为无约束优化提供了大型优化和中型优化算法.由option中的参数LargeScale控制:LargeScale=’on’(默认值),使用大型算法LargeScale=’off’,使用中型算法fminunc为中型优化算法的搜索方向提供了3种算法,由option中的参数HeUpdate控制:HeUpdate=’bfg’(默认值),拟牛顿法的BFGS公式;HeUpdate=’dfp’,拟牛顿法的DFP公式;HeUpdate=’teepdec’,最速下降法fminunc为中型优化算法的步长一维搜索提供了两种算法,由option 中参数LineSearchType控制:LineSearchType=’quadcubic’(缺省值),混合的二次和三次多项式插值;LineSearchType=’cubicpoly’,三次多项式插搜索步长的算法选择(lqnonlin,lqcurvefit)LevenbergMarquardt=‘off’(GN法)LevenbergMarquardt=‘on’(LM法,缺省值)22+2某2+4某1某2+2某2+1)e某1例minf(某)=(4某11、编写M-文件fun1.m:functionf=fun1(某)f=e某p(某(1))某(4某某(1)^2+2某某(2)^2+4某某(1)某某(2)+2某某(2)+1);2、输入M文件myprg3.m如下:某0=[-1,1];某=fminunc('fun1',某0)y=fun1(某)三、实验内容1.求下列函数的极小值点:222f(某)=某1+4某2+9某3-2某1+18某22g(某)=某1+32某2-2某1某2+某1-2某22某2y22、求解min(+)对(a,b)的不同取值如(1,1)和(9,1),及不同算法(搜索方ab向、步长搜索、数值梯度与分析梯度等)的结果进行分析、比较。
数学实验作业(第八周)郭明钊 2012011880 化21一、原子位置问题1、 问题分析:题目中给出了各个原子之间的距离关系,所要求的就是每个原子在平面直角坐标系之中的具体位置。
则可以假设第i 个原子的坐标为(,)i i x y ,且假设第一个原子的位置为坐标原点,即(0,0),则问题所求就转化为了使得2222[()()]i ji j ij ij x x y y d -+--∑达到最小值时的解。
这样问题就转化为了无约束优化:2222min [()()]i j i j ij ij x x y y d -+--∑,在这里,建立数组x ,其中有50个数,()i x i 为奇数为第i 个原子的横坐标,()i x i 为偶数为第i 个原子的纵坐标。
2、 使用matlab 中的lsqnonlin 函数实现:首先建立函数m 文件function y=distance(x,d)y(1)=(x(2*4-1))^2+(x(2*4))^2-d(1)^2;y(2)=(x(2*12-1))^2+(x(2*12))^2-d(2)^2;y(3)=(x(2*13-1))^2+(x(2*13))^2-d(3)^2;y(4)=(x(2*17-1))^2+(x(2*17))^2-d(4)^2;y(5)=(x(2*21-1))^2+(x(2*21))^2-d(5)^2;y(6)=(x(2*5-1)-x(2*2-1))^2+(x(2*5)-x(2*2))^2-d(6)^2;y(7)=(x(2*16-1)-x(2*2-1))^2+(x(2*16)-x(2*2))^2-d(7)^2;y(8)=(x(2*17-1)-x(2*2-1))^2+(x(2*17)-x(2*2))^2-d(8)^2;y(9)=(x(2*25-1)-x(2*2-1))^2+(x(2*25)-x(2*2))^2-d(9)^2;y(10)=(x(2*5-1)-x(2*3-1))^2+(x(2*5)-x(2*3))^2-d(10)^2;y(11)=(x(2*20-1)-x(2*3-1))^2+(x(2*20)-x(2*3))^2-d(11)^2;y(12)=(x(2*21-1)-x(2*3-1))^2+(x(2*21)-x(2*3))^2-d(12)^2;y(13)=(x(2*24-1)-x(2*3-1))^2+(x(2*24)-x(2*3))^2-d(13)^2;y(14)=(x(2*5-1)-x(2*4-1))^2+(x(2*5)-x(2*4))^2-d(14)^2;y(15)=(x(2*12-1)-x(2*4-1))^2+(x(2*12)-x(2*4))^2-d(15)^2;y(16)=(x(2*24-1)-x(2*4-1))^2+(x(2*24)-x(2*4))^2-d(16)^2;y(17)=(x(2*8-1)-x(2*6-1))^2+(x(2*8)-x(2*6))^2-d(17)^2;y(18)=(x(2*13-1)-x(2*6-1))^2+(x(2*13)-x(2*6))^2-d(18)^2;y(19)=(x(2*19-1)-x(2*6-1))^2+(x(2*19)-x(2*6))^2-d(19)^2;y(20)=(x(2*25-1)-x(2*6-1))^2+(x(2*25)-x(2*6))^2-d(20)^2;y(21)=(x(2*8-1)-x(2*7-1))^2+(x(2*8)-x(2*7))^2-d(21)^2;y(22)=(x(2*14-1)-x(2*7-1))^2+(x(2*14)-x(2*7))^2-d(22)^2;y(23)=(x(2*16-1)-x(2*7-1))^2+(x(2*16)-x(2*7))^2-d(23)^2;y(24)=(x(2*20-1)-x(2*7-1))^2+(x(2*20)-x(2*7))^2-d(24)^2;y(25)=(x(2*21-1)-x(2*7-1))^2+(x(2*21)-x(2*7))^2-d(25)^2;y(26)=(x(2*14-1)-x(2*8-1))^2+(x(2*14)-x(2*8))^2-d(26)^2;y(27)=(x(2*18-1)-x(2*8-1))^2+(x(2*18)-x(2*8))^2-d(27)^2;y(28)=(x(2*13-1)-x(2*9-1))^2+(x(2*13)-x(2*9))^2-d(28)^2;y(29)=(x(2*15-1)-x(2*9-1))^2+(x(2*15)-x(2*9))^2-d(29)^2;y(30)=(x(2*22-1)-x(2*9-1))^2+(x(2*22)-x(2*9))^2-d(30)^2;y(31)=(x(2*11-1)-x(2*10-1))^2+(x(2*11)-x(2*10))^2-d(31)^2;y(32)=(x(2*13-1)-x(2*10-1))^2+(x(2*13)-x(2*10))^2-d(32)^2;y(33)=(x(2*19-1)-x(2*10-1))^2+(x(2*19)-x(2*10))^2-d(33)^2;y(34)=(x(2*20-1)-x(2*10-1))^2+(x(2*20)-x(2*10))^2-d(34)^2;y(35)=(x(2*22-1)-x(2*10-1))^2+(x(2*22)-x(2*10))^2-d(35)^2;y(36)=(x(2*18-1)-x(2*11-1))^2+(x(2*18)-x(2*11))^2-d(36)^2;y(37)=(x(2*25-1)-x(2*11-1))^2+(x(2*25)-x(2*11))^2-d(37)^2;y(38)=(x(2*15-1)-x(2*12-1))^2+(x(2*15)-x(2*12))^2-d(38)^2;y(39)=(x(2*17-1)-x(2*12-1))^2+(x(2*17)-x(2*12))^2-d(39)^2;y(40)=(x(2*15-1)-x(2*13-1))^2+(x(2*15)-x(2*13))^2-d(40)^2;y(41)=(x(2*19-1)-x(2*13-1))^2+(x(2*19)-x(2*13))^2-d(41)^2;y(42)=(x(2*15-1)-x(2*14-1))^2+(x(2*15)-x(2*14))^2-d(42)^2;y(43)=(x(2*16-1)-x(2*14-1))^2+(x(2*16)-x(2*14))^2-d(43)^2;y(44)=(x(2*20-1)-x(2*16-1))^2+(x(2*20)-x(2*16))^2-d(44)^2;y(45)=(x(2*23-1)-x(2*16-1))^2+(x(2*23)-x(2*16))^2-d(45)^2;y(46)=(x(2*18-1)-x(2*17-1))^2+(x(2*18)-x(2*17))^2-d(46)^2;y(47)=(x(2*19-1)-x(2*17-1))^2+(x(2*19)-x(2*17))^2-d(47)^2;y(48)=(x(2*20-1)-x(2*19-1))^2+(x(2*20)-x(2*19))^2-d(48)^2;y(49)=(x(2*23-1)-x(2*19-1))^2+(x(2*23)-x(2*19))^2-d(49)^2;y(50)=(x(2*24-1)-x(2*19-1))^2+(x(2*24)-x(2*19))^2-d(50)^2;y(51)=(x(2*23-1)-x(2*21-1))^2+(x(2*23)-x(2*21))^2-d(51)^2;y(52)=(x(2*23-1)-x(2*22-1))^2+(x(2*23)-x(2*22))^2-d(52)^2;运行实现d=[0.9607 0.4399 0.8143 1.3765 1.2722 0.5294 0.6144 0.3766 0.6893 0.9488...0.8000 1.1090 1.1432 0.4758 1.3402 0.7006 0.4945 1.0559 0.6810 0.3587...0.3351 0.2878 1.3746 0.3870 0.7511 0.4439 0.8363 0.3208 0.1574 1.2736...0.5781 0.9254 0.6401 0.2467 0.4727 1.3840 0.4366 1.0307 1.3904 0.5725...0.7660 0.4394 1.0952 1.0422 1.8255 1.4325 1.0851 0.4995 1.2277 1.1271...0.7060 0.8052]';x0=[zeros(1,3),ones(1,47)]; %设初值[x,norms,res]=lsqnonlin(@distance,x0,[],[],[],d)a=reshape(x,2,25)'b=a(:,1)';c=a(:,2)';plot(b,c,'*') %在坐标系中显示出各个原子的位置3、结果如下:误差平方和:norms = 0.1625误差向量res =8.4224e-002 -5.6716e-002 5.4597e-0025.6860e-003 -1.1847e-001 5.8619e-0023.8879e-002 1.1819e-001 2.2805e-0023.8320e-002 -3.4772e-003 -3.9762e-0021.1452e-002 5.3897e-002 -4.3139e-0022.1071e-002 -4.4450e-002 9.6968e-003-5.6455e-002 4.0990e-002 2.7157e-0021.4843e-001 1.5864e-002 -3.7006e-003-1.3585e-001 2.6711e-002 -3.8390e-0039.0472e-003 2.9573e-002 -4.3175e-003-2.5224e-003 -4.7600e-004 1.2934e-002-2.4690e-002 7.6172e-003 2.5536e-003-5.2482e-003 7.3814e-002 -3.1225e-003-6.2153e-002 4.1666e-002 1.3685e-0016.4955e-002 2.3253e-003 -6.2132e-002-1.5985e-003 -5.7399e-002 -1.5199e-0021.3400e-002 -1.8521e-002 1.2003e-0013.1653e-003各个原子的坐标数值(第一列为横坐标,第二列为纵坐标)ans =0 00.2496 1.37301.6630 1.60100.7720 0.64120.7953 1.17011.2807 0.94921.4662 0.83651.2996 0.50230.3616 0.50871.1538 0.82271.1655 1.3985-0.3685 -0.03120.2287 0.81570.9857 0.85610.5856 0.44400.6025 1.9132-0.2599 1.35380.5372 0.16430.7983 1.36701.1261 1.01080.8162 0.91311.6189 0.70121.0248 0.15481.4666 0.46970.8870 1.0702 显示在坐标系中:当改变初值时x0=[zeros(1,2),ones(1,48)]; %设初值得norms =0.2298ans =0 00.7773 1.54251.2131 1.73990.8442 0.52390.6526 0.98631.4017 1.14390.7255 0.70991.0215 0.8220-0.0902 0.93201.2946 1.03960.7993 1.3167-0.4498 0.26080.4560 0.67820.6244 1.06130.1326 1.11251.2374 1.98050.5434 1.25021.2808 0.02161.3079 0.47031.0750 0.94510.2150 1.25031.0575 0.51940.1391 0.52860.3273 1.01521.0902 0.9464当换成其他初值时,答案也会明显不同。
热动71 马千里 970669实验七 无约束优化实验目的1. 掌握MATLAB 优化工具箱的基本用法,对不同算法进行初步分析、比较。
2. 练习实际问题的非线性最小二乘拟合。
实验内容3. 求解)12424(min 22122211++++x x x x x e x ,初值(-1,1),对不同算法的结果进行分析、比较。
解:编制函数fun.mfunction y=fun(x)y=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);经过实验,用不同的算法fminu 得到的结果都是(0.5, -1),所不同的是迭代的次数有不同。
以上结果表明,MA TLAB 的缺省值对于此题优化效果较好,迭代次数最少。
6.《中国统计年鉴(1995)》给出表8的数据,试据此拟合生产函数中的参数,如何看待用线性最小二乘法和非线性最小二乘法拟合的结果。
解:根据Gobb-Douglas 生产函数,用Q, K, L 分别表示产值、资金、劳动力。
βαL aK L)Q(K,=a. 考虑线性最小二乘拟合。
对生产函数取对数L K a Q ln ln ln ln βα++=设R=[1 lnK lnL] x=[lna α β]’ y=[lnQ]R=1.0000 -1.3988 1.57231.0000 -1.0829 1.60691.0000 -0.9556 1.63481.0000 -0.8389 1.66361.0000 -0.5987 1.69261.0000 -0.4951 1.71071.0000 -0.4394 1.73591.0000 -0.2854 1.76401.0000 -0.0371 1.78221.0000 0.4053 1.7954 1.0000 0.6389 1.8160则Rx=y 代表一组超定方程组。
在MATLAB 下用x=R\y 得到最小二乘意义下的解 x=-3.23600.62082.3728即a=exp(-3.2360)=0.0393 α=0.6208 β=2.3728b.非线性模型function f=pp1(c)Q=[0.7171 0.8964 1.0202 1.1962 1.4928 1.6909 1.8531 2.1618 2.6635 3.45154.5006];K=[0.2469 0.3386 0.3846 0.4322 0.5495 0.6095 0.6444 0.7517 0.9636 1.49981.8944];L=[4.8179 4.9873 5.1282 5.2783 5.4334 5.5329 5.6740 5.8360 5.9432 6.02206.1470];f=Q-c(1)*k.^c(2).*L.^c(3);c0=[1 1 1]c=leastsq(‘pp1’, c0)y=sum(pp1(c).*pp1(c)) 计算误差平方和得到c= 0.0357 0.6300 2.4290y= 0.0394即a=0.0357 α=0.6300 β=2.4290再对线性模型计算误差平方和以做比较y=sum(pp1([0.0393 0.6208 2.3728]).* pp1([0.0393 0.6208 2.3728]))得到y=0.0441将以上结果列表如下是在不同意义下的最小二乘解。
数学实验七无约束优化化21 张冶5.某分子由25个原子组成,并且已经通过实验测量得到了其中某些原子对之间的距离(假设在平面结构上讨论),确定每个原子的位置关系。
解:由已知得,找到25个原子的相对坐标,使其满足题中所给数据,使其误差最小。
令第一个点的坐标为(0,0),其余点的坐标为(x i,y j), 则只需找出余下24个点的坐标使∑[(x i−x j)2+(y i−y j)2−d ij2]2i,j最小即可。
设x=[x2 y2 x3 y3 x4 y4 ······x12 y12······x24 y24]编写M文件如下:function y=yuanzi(x,d)y(1)=(x(2*4-3))^2+(x(2*4-2))^2-d(1)^2;y(2)=(x(2*12-3))^2+(x(2*12-2))^2-d(2)^2;y(3)=(x(2*13-3))^2+(x(2*13-2))^2-d(3)^2;y(4)=(x(2*17-3))^2+(x(2*17-2))^2-d(4)^2;y(5)=(x(2*21-3))^2+(x(2*21-2))^2-d(5)^2;y(6)=(x(2*5-3)-x(2*2-3))^2+(x(2*5-2)-x(2*2-2))^2-d(6)^2;y(7)=(x(2*16-3)-x(2*2-3))^2+(x(2*16-2)-x(2*2-2))^2-d(7)^2;y(8)=(x(2*17-3)-x(2*2-3))^2+(x(2*17-2)-x(2*2-2))^2-d(8)^2;y(9)=(x(2*25-3)-x(2*2-3))^2+(x(2*25-2)-x(2*2-2))^2-d(9)^2;y(10)=(x(2*5-3)-x(2*3-3))^2+(x(2*5-2)-x(2*3-2))^2-d(10)^2;y(11)=(x(2*20-3)-x(2*3-3))^2+(x(2*20-2)-x(2*3-2))^2-d(11)^2;y(12)=(x(2*21-3)-x(2*3-3))^2+(x(2*21-2)-x(2*3-2))^2-d(12)^2;y(13)=(x(2*24-3)-x(2*3-3))^2+(x(2*24-2)-x(2*3-2))^2-d(13)^2;y(14)=(x(2*5-3)-x(2*4-3))^2+(x(2*5-2)-x(2*4-2))^2-d(14)^2;y(15)=(x(2*12-3)-x(2*4-3))^2+(x(2*12-2)-x(2*4-2))^2-d(15)^2;y(16)=(x(2*24-3)-x(2*4-3))^2+(x(2*24-2)-x(2*4-2))^2-d(16)^2;y(17)=(x(2*8-3)-x(2*6-3))^2+(x(2*8-2)-x(2*6-2))^2-d(17)^2;y(18)=(x(2*13-3)-x(2*6-3))^2+(x(2*13-2)-x(2*6-2))^2-d(18)^2;y(19)=(x(2*19-3)-x(2*6-3))^2+(x(2*19-2)-x(2*6-2))^2-d(19)^2;y(20)=(x(2*25-3)-x(2*6-3))^2+(x(2*25-2)-x(2*6-2))^2-d(20)^2;y(21)=(x(2*8-3)-x(2*7-3))^2+(x(2*8-2)-x(2*7-2))^2-d(21)^2;y(22)=(x(2*14-3)-x(2*7-3))^2+(x(2*14-2)-x(2*7-2))^2-d(22)^2;y(23)=(x(2*16-3)-x(2*7-3))^2+(x(2*16-2)-x(2*7-2))^2-d(23)^2;y(24)=(x(2*20-3)-x(2*7-3))^2+(x(2*20-2)-x(2*7-2))^2-d(24)^2;y(25)=(x(2*21-3)-x(2*7-3))^2+(x(2*21-2)-x(2*7-2))^2-d(25)^2;y(26)=(x(2*14-3)-x(2*8-3))^2+(x(2*14-2)-x(2*8-2))^2-d(26)^2;y(27)=(x(2*18-3)-x(2*8-3))^2+(x(2*18-2)-x(2*8-2))^2-d(27)^2;y(28)=(x(2*13-3)-x(2*9-3))^2+(x(2*13-2)-x(2*9-2))^2-d(28)^2;y(29)=(x(2*15-3)-x(2*9-3))^2+(x(2*15-2)-x(2*9-2))^2-d(29)^2;y(30)=(x(2*22-3)-x(2*9-3))^2+(x(2*22-2)-x(2*9-2))^2-d(30)^2;y(31)=(x(2*11-3)-x(2*10-3))^2+(x(2*11-2)-x(2*10-2))^2-d(31)^2;y(32)=(x(2*13-3)-x(2*10-3))^2+(x(2*13-2)-x(2*10-2))^2-d(32)^2;y(33)=(x(2*19-3)-x(2*10-3))^2+(x(2*19-2)-x(2*10-2))^2-d(33)^2;y(34)=(x(2*20-3)-x(2*10-3))^2+(x(2*20-2)-x(2*10-2))^2-d(34)^2;y(35)=(x(2*22-3)-x(2*10-3))^2+(x(2*22-2)-x(2*10-2))^2-d(35)^2;y(36)=(x(2*18-3)-x(2*11-3))^2+(x(2*18-2)-x(2*11-2))^2-d(36)^2;y(37)=(x(2*25-3)-x(2*11-3))^2+(x(2*25-2)-x(2*11-2))^2-d(37)^2;y(38)=(x(2*15-3)-x(2*12-3))^2+(x(2*15-2)-x(2*12-2))^2-d(38)^2;y(39)=(x(2*17-3)-x(2*12-3))^2+(x(2*17-2)-x(2*12-2))^2-d(39)^2;y(40)=(x(2*15-3)-x(2*13-3))^2+(x(2*15-2)-x(2*13-2))^2-d(40)^2;y(41)=(x(2*19-3)-x(2*13-3))^2+(x(2*19-2)-x(2*13-2))^2-d(41)^2;y(42)=(x(2*15-3)-x(2*14-3))^2+(x(2*15-2)-x(2*14-2))^2-d(42)^2;y(43)=(x(2*16-3)-x(2*14-3))^2+(x(2*16-2)-x(2*14-2))^2-d(43)^2;y(44)=(x(2*20-3)-x(2*16-3))^2+(x(2*20-2)-x(2*16-2))^2-d(44)^2;y(45)=(x(2*23-3)-x(2*16-3))^2+(x(2*23-2)-x(2*16-2))^2-d(45)^2;y(46)=(x(2*18-3)-x(2*17-3))^2+(x(2*18-2)-x(2*17-2))^2-d(46)^2;y(47)=(x(2*19-3)-x(2*17-3))^2+(x(2*19-2)-x(2*17-2))^2-d(47)^2;y(48)=(x(2*20-3)-x(2*19-3))^2+(x(2*20-2)-x(2*19-2))^2-d(48)^2;y(49)=(x(2*23-3)-x(2*19-3))^2+(x(2*23-2)-x(2*19-2))^2-d(49)^2;y(50)=(x(2*24-3)-x(2*19-3))^2+(x(2*24-2)-x(2*19-2))^2-d(50)^2;y(51)=(x(2*23-3)-x(2*21-3))^2+(x(2*23-2)-x(2*21-2))^2-d(51)^2;y(52)=(x(2*23-3)-x(2*22-3))^2+(x(2*23-2)-x(2*22-2))^2-d(52)^2;运行程序如下:d=[0.9607 0.4399 0.8143 1.3765 1.2722 0.5294 0.6144 0.3766 0.6893 0.9488 0.8000 1.1090 1.1432 0.4758 1.3402 0.7006 0.4945 1.0559 0.6810 0.3587 0.3351 0.2878 1.1346 0.3870 0.75110.4439 0.8363 0.3208 0.1574 1.2736 0.5781 0.9254 0.6401 0.2467 0.4727 1.3840 0.4366 1.03071.3904 0.5725 0.7660 0.4394 1.0952 1.0422 1.8255 1.4325 1.0851 0.4995 1.2277 1.1271 0.70600.8052];x0=ones(1,48);[x,norms]=lsqnonlin(@yuanzi,x0,[],[],[],d); x=[0,0,x] ;D=reshape(x,2,25)'normsfor i=1:25plot(D(i,1),D(i,2),'*')hold on;end得到如下结果:D =0 01.7141 -0.04411.8719 -1.06420.8171 -0.55351.2606 -0.33781.5533 -0.56431.0677 -0.34581.0960 -0.73060.1433 -0.25541.4056 -0.53960.8949 -0.23200.0899 0.55620.5029 -0.70131.1012 -0.28760.5994 -0.29362.1994 -0.41771.3519 -0.07831.4262 -1.50811.2498 -1.17381.1860 -0.67640.7593 -1.02011.1465 -0.92950.3792 -0.40761.3248 -0.05561.2114 -0.5142norms =0.3008画出分布图:并且经过检验,发现当初值x0不同时,可能得到不同的结果。
第七章 无约束最优化的解析法本章主要内容:最速下降法及其收敛性与收敛速度 Newton 切线法及其收敛性与收敛速度 阻尼Newton 法 共轭梯度法及其收敛性 变度量法、最小二乘法教学目的及要求:掌握最速下降法并理解其收敛性与收敛速度,掌握Newton 切线法并理解其收敛性与收敛速度,了解阻尼Newton 法;掌握共轭梯度法并理解其收敛性;了解变度量法、最小二乘法。
教学重点:最速下降法.教学难点:变度量法.教学方法:启发式.教学手段:多媒体演示、演讲与板书相结合.教学时间:6学时.教学内容:§7.1 最速下降法考虑无约束最优化问题m i n ()f x , (7.1.1)其中:n f R R →具有一阶连续偏导数.算法7-1(最速下降法)Step1 选取初始数据.选取初始点0x ,给定允许误差0ε>,令0k =. Step2 检查是否满足终止准则.计算()k f x ∇,若()k f x ε∇<,迭代终止,k x 为问题(7.1.1)的近似最优解;否则,转Step3.Step3 进行一维搜索.取()k k d f x =-∇,求k λ和1k x +,使得()min ()k k k k k f x d f x d λλλ≥+=+, 1k k k k x x d λ+=+.令:1k k =+,返回Step2.特别地,考虑1m i n ()2T T f x x Qx b x c =++, (7.1.2) 其中,n n n x R Q R ⨯∈∈为正定矩阵,,n b R c R ∈∈.设第k 次迭代点为k x ,从点k x 出发沿()k f x -∇作一维搜索,得1()k k k k x x f x λ+=-∇,其中k λ为最优步长.根据定理 6.1.1,有1()()0T k k f x f x +∇∇=.而(),n f x Q x b x R∇=+∀∈, 所以1()()()k k k k f x f x Q f x λ+∇=∇-∇,从而(()())()0T k k k k f x Q f x f x λ∇-∇∇=,而Q 正定,即()()0T k k f x Q f x ∇∇>,故由上式解出()()()()T k k k T k k f x f x f x Q f x λ∇∇=∇∇, (7.1.3) 于是1()()()()()T k k k k k T k k f x f x x x f x f x Q f x +∇∇=-∇∇∇, (7.1.4) 这是最速下降法用于问题(7.1.2)的迭代公式.例1 用最速下降法求解问题2212min ()4f x x x =+, (7.1.5)其中12(,)T x x x =.取初始点(0)(1,1)T x =,允许误差0.1ε=.解 问题(7.1.5)中的f 是正定二次函数,且800,,0020Q b c ⎛⎫⎛⎫=== ⎪ ⎪⎝⎭⎝⎭.f 在点12(,)T x x x =处的梯度12()(8,2)T f x x x ∇=.第一次迭代:令搜索方向(0)(0)()(8,2)T d f x =-∇=--,(0)d ε==>,从点(0)x 出发沿(0)d 作一维搜索,由(7.1.3)式和(7.1.4)式有0680.130769520λ==, (1)(1,1)0.130769(8,2)(0.046152,0.738462)T T T x =+--=-.第二次迭代:令(1)(1)()(0.369216, 1.476924)T d f x =-∇=-,(1) 1.522375d ε==>,从点(1)x 出发沿(1)d 作一维搜索,按(7.1.4)式得(2)(0.101537,0.147682)T x =.第三次迭代:令(2)(2)()(0.812296,0.295364)T d f x =-∇=--,(2)0.864329d ε==>,按(7.1.4)式求得(3)(0.009747,0.107217)T x =-.第四次迭代:令(3)(3)()(0.077976,0.214434)T d f x =-∇=-,(3)0.228171d ε==>,按(7.1.4)式求得(4)(0.019126,0.027816)T x =.第五次迭代:令(4)(4)()(0.153008,0.055632)T d f x =-∇=--,(4)0.162807d ε==>,按(7.1.4)式求得(5)(0.001835,0.020195)T x =-.此时,(5)()f x ε∇=<,已满足精度要求,故得问题(7.1.5)的近似最优解(5)(0.001835,0.020195)T x =-.实际上问题(7.1.5)的最优解为(0,0)T x =.定理7.1.1 设:n f R R →具有一阶连续偏导数,0n x R ∈,记0()f x α=,假定水平集(,)S f α有界,令{}k x 是由最速下降法求解问题(7.1.1)产生的点列,则(1)当{}k x 是有穷点列时,其最后一个点是f 的平稳点;(2)当{}k x 是无穷点列时,它必有极限点,并且任一极限点都是f 的平稳点.定理7.1.2 设:n f R R →具有二阶连续偏导数,由最速下降法解问题(7.1.1)产生的点列{}k x 收敛于x .若存在0ε>和0M m >>,使得当x x ε-<时,有222(),T n m y y f x y M y y R ≤∇≤∀∈, (7.1.7) 则{}k x 线性收敛于x .§7.2 Newton 法21()()()()()()()()2T T k k k k k k f x x f x f x x x x x f x x x ϕ≈=+∇-+-∇-. 令 ()0x ϕ∇=,即2()()()0k k k f x f x x x ∇+∇-=,解之得211[()]()k k k k x x f x f x -+=-∇∇.算法7-2(Newton 法)Step1 选取初始数据.选取初始点0x ,给定允许误差0ε>,令0k =. Step2 检查是否满足终止准则.计算()k f x ∇,若()k f x ε∇<,迭代终止,k x 为问题(7.1.1)的近似最优解;否则,转Step3.Step3 构造Newton 方向.计算21[()]k f x -∇,取21[()]()k k k d f x f x -=-∇∇. Step4 求下一个迭代点.令1k k k x x d +=+,:1k k =+,返回Step2.例2 用Newton 法求解问题(7.1.5),仍取初始点(0)(1,1)T x =,允许误差0.1ε=.解 (0)()(8,2)T f x ∇=,2(0)80()02f x ⎛⎫∇= ⎪⎝⎭,故2(0)11/80[()]01/2f x -⎛⎫∇= ⎪⎝⎭,(0)2(0)1(0)1[()]()1d f x f x -⎛⎫=-∇∇=- ⎪⎝⎭,(1)(0)(0)(1,1)(1,1)(0,0)T T T x x d =+=-=.由于 (1)()00.1f x ∇=<,迭代结束,得(1)x 为问题(7.1.5)的最优解.定理7.2.1 设:n f R R →具有三阶连续偏导数,,()0n x R f x ∈∇=,若存在0ε>和0m >,使得当x x ε-≤时,有22(),T n m y y f x y y R ≤∇∀∈, (7.2.2) 则当初始点0x 充分接近x 时,由Newton 法解问题(7.1.1)产生的点列{}k x 收敛于x ,并有二阶收敛速度.算法7-3(阻尼Newton 法)Step1 选取初始数据.选取初始点0x ,给定允许误差0ε>,令0k =. Step2 检查是否满足终止准则.计算()k f x ∇,若()k f x ε∇<,迭代终止,k x 为问题(7.1.1)的近似最优解;否则,转Step3.Step3 构造Newton 方向.计算21[()]k f x -∇,取21[()]()k k k d f x f x -=-∇∇. Step4 进行一维搜索.求k λ和1k x +,使得()min ()k k k k k f x d f x d λλλ≥+=+, 1k k k k x x d λ+=+.令:1k k =+,返回Step2.例3 用阻尼Newton 法求解下面问题:222121min ()(1)2()f x x x x =-+-,(7.2.6) 其中12(,)T x x x =.取初始点(0)(0,0)T x =,允许误差0.1ε=.解 第一次迭代:212112212(1)8()()4()x x x x f x x x ⎛⎫----∇= ⎪-⎝⎭, 22212111168()28()84x x x x f x x ⎛⎫--+-∇= ⎪-⎝⎭, 故 (0)(0)()(2,0),()2T f x f x ε∇=-∇=>,2(0)2(0)1201/20(),[()]0401/4f x f x -⎛⎫⎛⎫∇=∇= ⎪ ⎪⎝⎭⎝⎭.于是,Newton 方向 (0)2(0)1(0)[()]()(1,0)T d f x f x -=-∇∇=,从(0)x 出发沿(0)d 作一维搜索,即求(0)(0)2400min ()min(1)2f x d λλλλλ≥≥+=-+的最优解,得到012λ=.令 (1)(0)(0)0(1/2,0)T x x d λ=+=.(1)(1)()(0,1),()1T f x f x ε∇=-∇=>.第二次迭代:2(1)2(1)184111(),[()]48124f x f x --⎛⎫⎛⎫∇=∇= ⎪ ⎪-⎝⎭⎝⎭, (1)2(1)1(1)[()]()(1/4,1/2)T d f x f x -=-∇∇=.从(1)x 出发沿(1)d 作一维搜索,即求(1)(1)24001min ()min [8(2)(2)]128f x d λλλλλ≥≥+=-+- 的最优解,得到12λ=.令(2)(1)(1)1(1,1)T x x d λ=+=.(1)(1)()(0,1),()1T f x f x ε∇=-∇=>.此时,(2)(2)()(0,0),()0T f x f x ε∇=∇=<,得问题(7.2.6)的最优解为(2)(1,1)T x =,这是惟一的最优解.定理7.2.2 设:n f R R →具有二阶连续偏导数,0n x R ∈,记0()f x α=,假定水平集(,)S f α有界,并且对一切2,()n x R f x ∈∇正定.若{}k x 是由阻尼Newton法求解问题(7.1.1)产生的点列,则(1)当{}k x 是有穷点列时,其最后一个点是f 的唯一极小点;(2)当{}k x 是无穷点列时,它必收敛于f 的唯一极小点.§7.3 共轭梯度法最速下降法和Newton 法是最基本的无约束最优化方法,它们的特性各异:前者计算量较小而收敛速度慢;后者虽然收敛速度快,但需要计算目标函数的Hesse 矩阵及其逆矩阵,故计算量大.本节介绍一类无需计算二阶导数并且收敛速度快的方法.定义 设n n Q R ⨯∈为正定矩阵.若n R 中的向量组011,,,m d d d - 满足0,,0,1,,1,T i j d Qd i j m i j =∀=-≠ ,则称011,,,m d d d - 是Q 共轭的.定理7.3.1 设n n Q R ⨯∈是正定矩阵,n R 中非零向量组011,,,m d d d - 是Q 共轭的,则这m 个向量线性无关.定理7.3.2 设n p R ∈,011,,,n d d d - 是n R 中线性无关的向量组,若p 与每个i d 都正交,则0p =.考虑正定二次函数的无约束最优化问题1min ()2T T f x x Qx b x c =++, (7.3.3) 其中n n Q R ⨯∈为正定矩阵,,n b R c R ∈∈.定理7.3.3 设n n Q R ⨯∈为正定矩阵,011,,,n d d d - 是n R 中一组Q 共轭的非零向量.对于问题(7.3.3),若从任意点0n x R ∈出发依次沿011,,,n d d d - 进行一维搜索,则至多经过n 次迭代可得问题(7.3.3)的最优解.算法7-4(共轭方向法)给定一个正定矩阵n n Q R ⨯∈.Step1 选取初始数据.选取初始点0x ,给定允许误差0ε>. Step2 选取初始搜索方向.计算0()f x ∇,求出0d ,使00()0T f x d ∇<,令0k =. Step3 检查是否满足终止准则.若()k f x ε∇<,迭代终止;否则,转Step4. Step4 进行一维搜索.求k λ和1k x +,使得()min ()k k k k k f x d f x d λλλ≥+=+, 1k k k k x x d λ+=+.Step5 选取搜索方向.求1k d +使10,0,1,,T k j d Qd j k +== ,令:1k k =+,返回Step3.如果用共轭方向法求解正定二次函数的无约束最优化问题1min ()2T T f x x Qx b x c =++, (7.3.3) 其中n n Q R ⨯∈为正定矩阵,,n b R c R ∈∈(此时算法中的正定矩阵应与二次函数的正定矩阵一致),那么容易推出迭代公式为1()T k k k k k T k kf x d x x d d Qd +∇=-. (7.3.10) 对于求解问题(7.1.1),我们还有如下一些方法.Fletcher-Reeves (FR )公式:212()()k k k f x f x α+∇=∇;Dixon-Myers (DM )公式:11()()()T k k k T k k f x f x d f x α++∇∇=-∇; Polak-Ribiere-Polyak (PRP )公式:11()[()()]()()T k k k k T k k f x f x f x f x f x α++∇∇-∇=∇∇. 算法7-5(FR 共轭梯度法)Step1 选取初始数据.选取初始点0x ,给定允许误差0ε>. Step2 检查是否满足终止准则.计算0()f x ∇,若0()f x ε∇<,迭代终止,0x为(7.1.1)的近似最优解;否则,转Step3.Step3 构造初始搜索方向.计算00(),0d f x k =-∇=.Step4 进行一维搜索.求k λ和1k x +,使得()min ()k k k k k f x d f x d λλλ≥+=+, 1k k k k x x d λ+=+.Step5 检查是否满足终止准则.计算1()k f x +∇,若1()k f x ε+∇<,迭代终止,1k x +为(7.1.1)的近似最优解;否则,转Step6.Step6 检查迭代次数.若1k n +=,令0:n x x =,返回Step3;否则,转Step7.Step7 构造共轭方向.用FR 公式取11()k k k k d f x d α++=-∇+,212()()k k k f x f x α+∇=∇,令:1k k =+,返回Step4. 注意,如果算法7-4的Step7中k α的形式改为DM 公式或PRP 公式,则分别得到DM 共轭梯度法和PRP 共轭梯度法.定理7.3.5 设:n f R R →具有一阶连续偏导数,0n x R ∈,记0()f x α=,并假设水平集(,)S f α有界.若{}k x 是由共轭梯度法(包括任何一种仅仅与算法7-5中k α的形式不同的共轭梯度法)解问题(7.1.1)所产生的点列,则(1)当{}k x 是有穷点列时,其最后一个点是f 的平稳点;(2)当{}k x 是无穷点列时,它必有极限点,并且任一极限点都是f 的平稳点.可以证明:共轭梯度法产生的点列{}k x 是n 步二阶收敛的,即2lim sup k n k k x x q x x +→∞-≤<∞-.例4 用FR 共轭梯度法求解问题(7.2.6)222121min ()(1)2()f x x x x =-+-,仍取初始点(0)(0,0)T x =,允许误差0.1ε=.222121min ()(1)2()f x x x x =-+-解 因为212112212(1)8()()4()x x x x f x x x ⎛⎫----∇= ⎪-⎝⎭, 所以(0)(0)()(2,0),()2T f x f x ε∇=-∇=>.令(0)(0)()(2,0)T d f x =-∇=,从(0)x 出发,沿(0)d 进行一维搜索,得(1)(0)(0)001/4,(1/2,0)T x x d λλ==+=.从而(1)(1)()(0,1),()1T f x f x ε∇=-∇=>.由FR 公式有2(1)02(0)()14()f x f x α∇==∇, 因此,新的搜索方向为 (1)(1)(0)0()(1/2,1)T d f x d α=-∇+=.从(1)x 出发,沿(1)d 进行一维搜索,得(2)(1)(1)111,(1,1)T x x d λλ==+=.此时(2)(2)()(0,0),()0T f x f x ε∇=∇=<.得问题(7.2.6)的最优解为(2)(1,1)T x =.§7.4 变度量法前面介绍的最速下降法和阻尼Newton 法,它们的迭代公式可以统一为1,(),k k k k k k k x x d d G f x λ+=+⎧⎨=-∇⎩ (7.4.1)其中,n n k k G R λ⨯∈是从点k x 出发沿k d 进行一维搜索的最优步长.当k n G I =(n 阶单位矩阵)时,(7.4.1)式即为最速下降法的迭代公式;当21[()]k k G f x -=∇时,(7.4.1)式就是阻尼Newton 法的迭代公式.因此,如果能够使k G 的选取既不需要计算Hesse 矩阵及其逆矩阵,又能很好地近似于21[()]k f x -∇,则由(7.4.1)式确定的迭代算法将会保持Newton 法收敛速度快的优点,同时又具有计算简单的特性.设问题(7.1.1)中目标函数f 具有二阶连续偏导数,且2()k f x ∇正定.为使由(7.4.1)中第2式确定的搜索方向是f 在点k x 处的下降方向,根据定理1.2.3,应当要求()0T k k f x d ∇<,或即()()0T k k k f x G f x ∇∇>,所以我们应要求(7.4.1)式中的k G 是正定矩阵.设在第1k +次迭代后得到1k x +,将f 在点1k x +处作Taylor 展开,取二阶近似,得21111111()()()()()()()2TT k k k k k k f x f x f x x x x x f x x x ++++++≈+∇-+-∇-, 对上式两边求梯度,有2111()()()()k k k f x f x f x x x +++∇≈∇+∇-,令k x x =,得到2111()()()()k k k k k f x f x f x x x +++∇-∇≈∇-,即21111[()][()()]k k k k k f x f x f x x x -+++∇∇-∇≈-.易知,当f 为正定二次函数时,上式成为等式,即 21111[()][()()]k k k k k f x f x f x x x -+++∇∇-∇=-. (7.4.2)因为具有正定Hesse 矩阵的函数在极小点附近可用二次函数很好地近似,所以如果我们迫使1k G +满足类似于(7.4.2)式的关系式,即令111[()()]k k k k k G f x f x x x +++∇-∇=-, (7.4.3)则1k G +就可以很好地近似于211[()]k f x -+∇.因此称(7.4.3)式为拟Newton 条件.为方便起见,记1k k k x x x +∆=-,1()()k k k g f x f x +∆=∇-∇,1k k k G G G +∆=-,并称k G ∆为校正矩阵,则拟Newton 条件可以写成k k k k k G g x G g ∆∆=∆-∆. (7.4.4)综上所述,我们得到如下的一类算法.算法7-6(拟Newton 法)Step1 选取初始数据.选取初始点0n x R ∈和初始矩阵0G ,要求0G 为正定矩阵(可取0n G I =),给定允许误差0ε>,令0k =.Step2 检查是否满足终止准则.计算()k f x ∇,若()k f x ε∇<,迭代终止,k x 为问题(7.1.1)的近似最优解;否则,转Step3.Step3 构造搜索方向.令()k k k d G f x =-∇.Step4 进行一维搜索.求k λ和1k x +,使得()min ()k k k k k f x d f x d λλλ≥+=+, 1k k k k x x d λ+=+.Step5 产生校正矩阵.求出满足(7.4.4)的校正矩阵k G ∆,令1,:1k k k G G G k k +=+∆=+,返回Step2.算法7-7(DFP 法)Step1 选取初始数据.选取初始点0x 和初始矩阵0n G I =,给定允许误差0ε>.Step2 检查是否满足终止准则.计算0()f x ∇,若0()f x ε∇<,迭代终止,0x 为(7.1.1)的近似最优解;否则,转Step3.Step3 构造初始DFP 方向.取00()d f x =-∇,令0k =.Step4 进行一维搜索.求出k λ和1k x +,使得01()min (),.k k k k k k k k k f x d f x d x x d λλλλ≥++=+⎧⎪⎨=+⎪⎩ Step5 检查是否满足终止准则.计算1()k f x +∇,若1()k f x ε+∇<,迭代终止,1k x +为(7.1.1)的近似最优解;否则,转Step6.Step6 检查迭代次数.若1k n +=,令0:n x x =,返回Step3;否则,转Step7.Step7 构造DFP 方向.用DFP 公式1T T k k k k k k k k T T k k k k kx x G g g G G G x g g G g +∆∆∆∆=+-∆∆∆∆,算出1k G +,取111()k k k d G f x +++=-∇,令:1k k =+,返回Step4.定理7.4.4 设:n f R R →具有一阶连续偏导数,0n x R ∈,记0()f x α=,并假设水平集(,)S f α有界.若{}k x 是由DFP 法求解问题(7.1.1)产生的点列,则(1)当{}k x 是有穷点列时,其最后一个点是f 的平稳点;(2)当{}k x 是无穷点列时,它必有极限点,并且其任一极限点都是f 的平稳点.可以证明DFP 法具有超线性收敛性.算法7-8(BFGS 法)Step1 选取初始数据.选取初始点0x 和初始矩阵0n G I =,给定允许误差0ε>.Step2 检查是否满足终止准则.计算0()f x ∇,若0()f x ε∇<,迭代终止,0x 为(7.1.1)的近似最优解;否则,转Step3.Step3 构造初始BFGS 方向.取00()d f x =-∇,令0k =.Step4 进行一维搜索.求出k λ和1k x +,使得01()min (),.k k k k k k k k k f x d f x d x x d λλλλ≥++=+⎧⎪⎨=+⎪⎩ Step5 检查是否满足终止准则.计算1()k f x +∇,若1()k f x ε+∇<,迭代终止,1k x +为(7.1.1)的近似最优解;否则,转Step6.Step6 检查迭代次数.若1k n +=,令0:n x x =,返回Step3;否则,转Step7. Step7 构造BFGS 方向.用BFGS 公式111()T T T T k k k k k k k k k k k k k T T T k k k k k kx x g G g G G x g G G g x x g x g x g +⎛⎫∆∆∆∆=++-∆∆+∆∆ ⎪∆∆∆∆∆∆⎝⎭, 算出1k G +,取111()k k k d G f x +++=-∇,令:1k k =+,返回Step4.可以证明BFGS 法具有超线性收敛性.§7.5 最小二乘法在实际应用中,我们经常遇到目标函数为若干个函数的平方和的最优化问题: 21min ()()mi i s x f x ==∑, (7.5.1)其中n x R ∈,一般假设m n ≥,这类问题称为最小二乘问题.当每个()i f x 都是线性函数时,问题(7.5.1)称为线性最小二乘问题,否则,称为非线性最小二乘问题.由于最小二乘问题相对于一般无约束最优化问题而言具有特殊形式,因此除能运用本章前面介绍的一般求解方法外,还应有更为简便有效的方法.一、线性最小二乘法当()i f x 为线性函数时,即1(),1,2,,ni ij j i j f x a x b i m ==-=∑ ,问题(7.5.1)就成为线性最小二乘问题.如令11111,n m mn m a a b A b a a b ⎛⎫⎛⎫ ⎪ ⎪== ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭,12()((),(),,())T m f x f x f x f x = ,则 2()()()()()T T s x f x f x Ax b Ax b Ax b ==--=-, 从而问题(7.5.1)可表示为2min ()s x Ax b =-. (7.5.2) 因为()()()2T T T T T s x Ax b Ax b x A Ax b Ax b b =--=-+,所以()s x 为二次函数,且2()22,()2T T T s x A Ax A b s x A A ∇=-∇=.显然,对一切n y R ∈,均有20T T y A Ay Ay =≥,即知,T A A 是半正定矩阵,从而由定理2.3.7知,()s x 是n R 上的凸函数.定理7.5.1 n x R ∈是问题(7.5.2)的最优解的充要条件是x 满足方程组T T A Ax A b =. (7.5.3) 容易知道,矩阵T A A 正定的充要条件是对于一切非零向量n y R ∈,有20T T y A Ay Ay =>.记1212(,,,),(,,,)T n n y y y y A p p p == ,则上式等价于10nj j j Ay p y ==≠∑. (7.5.4)而(7.5.4)式成立的充要条件是向量组12,,,n p p p 线性无关,这又等价于rank A n =.从而T A A 为正定矩阵的充要条件是rank A n =,换句话说,()s x 为正定二次函数的充要条件是rank A n =.定理7.5.2 若rank A n =,则1()T T x A A A b -= (7.5.5)为问题(7.5.2)的唯一最优解.显然,方程组Ax b =有解的充分必要条件是问题(7.5.2)的最优值min ()0s x =.例5 求解线性最小二乘问题 2min Ax b -, (7.5.6)其中31223,3141A b ⎛⎫⎛⎫ ⎪ ⎪=-=- ⎪ ⎪ ⎪ ⎪--⎝⎭⎝⎭.解 因为11472671,()726714350T T A A A A --⎛⎫⎛⎫== ⎪ ⎪-⎝⎭⎝⎭,所以,由公式(7.5.5),求得问题(7.5.6)的最优解22673213/14137141343/103501x ⎛⎫-⎛⎫⎛⎫⎛⎫ ⎪=-= ⎪⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭ ⎪-⎝⎭. 由于问题(7.5.6)的最优值为()()11.454285710T Ax b Ax b --=≠.因此,方程组12121232,233,41x x x x x x +=⎧⎪-=-⎨⎪-+=-⎩无解.二、Gauss-Newton 法现在讨论非线性最小二乘问题2m i n ()()s x f x =, (7.5.7) 其中12,()((),(),,()),()n T m i x R f x f x f x f x f x ∈= 不全是线性函数,且假定()i f x 具有一阶连续偏导数,1,2,,i m = .算法7-9(阻尼Gauss-Newton 法)Step1 选取初始数据.选取初始点0x ,给定允许误差0ε>,令0k =. Step2 检查是否满足终止准则.计算()k f x 及Jacobi 矩阵()k f x ∇,若()()T k k f x f x ε∇<,迭代终止,k x 为问题(7.5.7)的近似极小点;否则,转Step3.Step3 构造Gauss-Newton 方向.计算1[()()]T k k f x f x -∇∇,取1[()()]()()T T k k k k k d f x f x f x f x -=-∇∇∇.Step4 进行一维搜索.求k λ和1k x +,使得()min ()k k k k k s x d s x d λλλ≥+=+, 1k k k k x x d λ+=+.令:1k k =+,返回Step2.同阻尼Newton 法一样,阻尼Gauss-Newton 法具有全局收敛性.三、Levenberg-Marquardt 法算法7-10(LM 法)Step1 选取初始数据.选取初始点0x ,给定初始参数00α>,放大因子1β>及允许误差0ε>,令0k =.Step2 求目标函数值.计算()k f x 及()k s x . Step3 求Jacobi 矩阵.计算()k f x ∇. Step4 检查是否满足终止准则.若()()T k k f x f x ε∇<,迭代终止,k x 为问题(7.5.7)的近似最优解;否则,转Step5.Step5 构造LM 方向.计算1[()()]T k k k n f x f x I α-∇∇+,令1[()()]()()T T k k k k n k k d f x f x I f x f x α-=-∇∇+∇.Step6 检查目标函数是否下降.计算()k k f x d +和()k k s x d +, 若()()k k k s x d s x +<,转Step8;否则,转Step7.Step7 放大参数.令:k k αβα=,返回Step5.Step8 缩小参数.令11,/,:1k k k k k x x d k k ααβ++=+==+,返回Step2. 初始参数0α和放大因子β应取适当数值,例如,根据经验可取00.01,10αβ==.可以证明,LM 法具有全局收敛性.。
淮海工学院实验报告书课程名称:数学实验实验名称:无约束优化与约束优化班级数学091姓名:耿萍学号:090911107 日期:2012.5.18 地点数学实验室指导教师:曹卫平成绩:数理科学系1.实验目的:(1)学习建立最优化数学模型,并通过MATLAB求解。
(2)掌握MATLAB优化工具箱的基本用法,对不同算法进行初步分析、比较。
(3)练习实际问题的非线性最小二乘拟合。
(4)掌握用MATLAB优化工具包解线性规划和非线性规划。
(5)练习建立实际问题的线性规划和非线性规划模型。
2.实验内容:(1)某工厂生产甲乙两种产品,一件甲用A原料1公斤,B原料5公斤;一件已用A原料2公斤,B原料4公斤。
现有A原料20公斤,B 原料70公斤。
甲乙产品每件售价分别为20元和30元。
问如何安排生产使收入最大?当A原料或B原料,以每公斤2元买进B原料。
问如何安排计划使收入最大?当A原料或B原料增加1公斤时对收入影响多大。
又若可用有限资金以每公斤6元买进A原料,以每公斤2元买进原料。
问如何安排计划使利润最大?解释得到的结果。
(2)炼油厂将A,B,C三种原油加工成甲乙丙三种汽油。
一桶原油加工成一桶汽油的费用为4元,每天至多能加工汽油14000桶。
原油的买入价、买入量、辛烷值、硫含量,及汽油的卖入价、需求量、辛烷值、硫含量由下表给出。
问如何安排生产计划,在满足需求的条件下使利润最大?一般来说,做广告可以增加销售,估计一天向一种汽油投入一元广告费,可以使这种汽油日销售量增加10桶。
问如何安排生产和广告计划使利润最大化?原油类别买入价(元/桶)买入量(桶/天)辛烷值(%)硫含量(%)A 45 <=5000 12 0.5B 35 <=5000 6 2.0C 25 <=5000 8 3.0汽油类别卖出价(元/桶)需求量(桶/天)辛烷值(%)硫含量(%)甲70 3000 >=10 <=1.0乙60 2000 >=8 <=2.0丙50 1000 >=6 <=1.0(3)根据实验1表2中给出的美国人口数据,用非线性最小二乘法拟合阻滞增长模型中的参数,注意只拟合2个参数r,xm,与拟合3个参数r,xm,x0有何区别,并与实验1用线性最小二乘法拟合的结果进行比较。
实验 7:无约束优化习题2:取不同的初值计算下列非线性规划,尽可能求出所有局部极小点,进而找出全局极小点,并对不同算法的结果进行分析比较:c a a c a a x x x x z T T 222111)()(1)()(1min +---+---=,2R ∈x其中)73.0,7.0(),(21=c c ,T a )4,4(1=,Ta )8.3,5.2(2=。
1. 程序设计1)构建题目中的方程function [f,g]=func(x) a1=[4,4]'; a2=[2.5,3.8]'; c=[0.7,0.73];f=-1/((x-a1)'*(x-a1)+c(1))-1/((x-a2)'*(x-a2)+c(2));%自定义目标函数的梯度函数 if nargout>1g(1)=2*(x(1)-a1(1))/((x(1)-a1(1))^2+(x(2)-a1(2))^2+c(1))^2+2*(x(1)-a2(1))/((x(1)-a2(1))^2+(x(2)-a2(2))^2+c(2))^2g(2)=2*(x(2)-a1(2))/((x(1)-a1(1))^2+(x(2)-a1(2))^2+c(1))^2+2*(x(2)-a2(2))/((x(1)-a2(1))^2+(x(2)-a2(2))^2+c(2))^2 end2)进行非线性规划并比较不同算法的不同opt1=optimset('LargeScale','off','MaxFunEvals',1000,'TolFun',1e-8,'To lX',1e-8,’GradObj ’,’off ’);%关闭大规模算法,规定最大调用次数,以及计算精度,拟牛顿法DFGS 公式,是否采用自设梯度%函数可调opt2=optimset(opt1,'HessUpdate','dfp');%拟牛顿法BFP 公式 opt3=optimset(opt1,'HessUpdate','gillmurray'); %拟牛顿法GM 公式 opt4=optimset(opt1,'HessUpdate','steepdesc'); %最速下降法opt5=optimset(opt1,'lineSearchType',' cubicpoly');%采用三次多项式插值 opt6=optimset(opt5,'HessUpdate','dfp'); opt7=optimset(opt5,'HessUpdate','gillmurray'); opt8=optimset(opt5,'HessUpdate','steepdesc');x0=[3,3]';%设置不同初值,比较结果[x1,v1,exit1,out1]=fminunc(@func,x0,opt1) %进行非线性规划[x2,v2,exit2,out2]=fminunc(@func,x0,opt2)[x3,v3,exit3,out3]=fminunc(@func,x0,opt3)[x4,v4,exit4,out4]=fminunc(@func,x0,opt4)[x5,v5,exit5,out5]=fminunc(@func,x0,opt5)[x6,v6,exit6,out6]=fminunc(@func,x0,opt6)[x7,v7,exit7,out7]=fminunc(@func,x0,opt7)[x8,v8,exit8,out8]=fminunc(@func,x0,opt8)3)绘制原函数的三维图形,找到全局极小点n1=2;n2=5; %绘图范围m=300; %取点个数x1=linspace(n1,n2,m);x2=linspace(n1,n2,m);[X,Y]=meshgrid(x1,x2);F=0;for i=1:mfor j=1:mF(i,j)=func([x1(i),x2(j)]');endendmesh(X,Y,F)xlabel('X1');ylabel('X2');zlabel('Func');pause;contour(x1,x2,F,50); %绘制等高线50条xlabel('X1');ylabel('X2');2.运行结果及分析可以看到采用BFGS与GM算法的结果完全相同,事实上,在运行时MatLab会输出警告,GM方法采用的应该还是默认的BFGS算法。
一、实验目的1、掌握MATLAB优化工具箱的基本用法,对不同算法进行初步分析、比较。
2、练习用无约束优化方法建立和求解实际问题的模型(包括最小二乘拟合)。
二、实验容项目一:某分子由25个原子组成,并且已经通过实验测量得到了其中某些原子队之间的距离(假设在平面结构上讨论),如表所示。
请你确定每个原子的位置关系。
原子对距离原子对距离原子对距离原子对距离(4,1) 0.9607 (5,4) 0.4758 (18,8) 0.8363 (15,13) 0.5725 (12,1) 0.4399 (12,4) 1.3402 (13,9) 0.3208 (19,13) 0.7660 (13,1) 0.8143 (24,4) 0.7006 (15,9) 0.1574 (15,14) 0.4394 (17,1) 1.3765 (8,6) 0.4945 (22,9) 1.2736 (16,14) 1.0952 (21,1) 1.2722 (13,6) 1.0559 (11,10) 0.5781 (20,16) 1.0422(5,2) 0.5294 (19,6) 0.6810 (13,10) 0.9254 (23,16) 1.8255 (16,2) 0.6144 (25,6) 0.3587 (19,10) 0.6401 (18,17) 1.4325 (17,2) 0.3766 (8,7) 0.3351 (20,10) 0.2467 (19,17) 1.0851 (25,2) 0.6893 (14,7) 0.2878 (22,10) 0.4727 (20,19) 0.4995(5,3) 0.9488 (16,7) 1.1346 (18,11) 1.3840 (23,19) 1.2277 (20,3) 0.8000 (20,7) 0.3870 (25,11) 0.4366 (24,19) 1.1271(21,3) 1.1090 (21,7) 0.7511 (15,12) 1.0307 (23,21) 0.7060 (24,3) 1.1432 (14,8) 0.4439 (17,12) 1.3904 (23,22) 0.8025问题分析:每个原子的位置都是未知的,在坐标系中只有相对的位置参数,不妨固定原子1的坐标为(0,0)。
实验7无约束优化生医0 王言2010013212【实验目的】1.掌握用MATLAB优化工具箱的基本用法,对不同算法进行初步分析、比较。
2.练习用无约束优化方法建立和求解实际问题模型(包括最小二乘拟合)。
【实验内容】5. 某分子由25个原子组成,并且已经通过实验测量得到了其中某些原子对之间的距离(假设在平面结构上讨论),如表7.8所示。
请你确定每个原子的位置关系。
表7.8解:分析与建模: 不妨设第i 点坐标为,其中第一个点坐标为,问题即为求达到最小值的解,则问题转化为无约束优化:,其中:Matlab 代码如下:M 文件:function f=location(x,d);x(1)=0; x(26)=0;f(1)=(x(4))^2+(x(29))^2-d(1)^2; f(2)=(x(12))^2+(x(37))^2-d(2)^2; f(3)=(x(13))^2+(x(38))^2-d(3)^2; f(4)=(x(17))^2+(x(42))^2-d(4)^2; f(5)=(x(21))^2+(x(36))^2-d(5)^2;f(6)=(x(5)-x(2))^2+(x(30)-x(27))^2-d(6)^2; f(7)=(x(16)-x(2))^2+(x(41)-x(27))^2-d(7)^2; f(8)=(x(17)-x(2))^2+(x(42)-x(27))^2-d(8)^2; f(9)=(x(25)-x(2))^2+(x(50)-x(27))^2-d(9)^2; f(10)=(x(5)-x(3))^2+(x(30)-x(28))^2-d(10)^2; f(11)=(x(20)-x(3))^2+(x(45)-x(28))^2-d(11)^2; f(12)=(x(21)-x(3))^2+(x(46)-x(28))^2-d(12)^2; f(13)=(x(24)-x(3))^2+(x(49)-x(28))^2-d(13)^2;),(i i y x )0,0(),(11=y x ∑--+-ji ij j i j id y y x x,2222])()[(∑--+-ji ij j i j i d y y x x ,2222])()[(min ⎥⎦⎤⎢⎣⎡=252432252432y y y y x x x x xf(14)=(x(5)-x(4))^2+(x(30)-x(29))^2-d(14)^2;f(15)=(x(12)-x(4))^2+(x(37)-x(29))^2-d(15)^2;f(16)=(x(24)-x(4))^2+(x(49)-x(29))^2-d(16)^2;f(17)=(x(8)-x(6))^2+(x(33)-x(31))^2-d(17)^2;f(18)=(x(13)-x(6))^2+(x(38)-x(31))^2-d(18)^2;f(19)=(x(19)-x(6))^2+(x(44)-x(31))^2-d(19)^2;f(20)=(x(25)-x(6))^2+(x(50)-x(31))^2-d(20)^2;f(21)=(x(8)-x(7))^2+(x(33)-x(32))^2-d(21)^2;f(22)=(x(14)-x(7))^2+(x(39)-x(32))^2-d(22)^2;f(23)=(x(16)-x(7))^2+(x(41)-x(32))^2-d(23)^2;f(24)=(x(20)-x(7))^2+(x(45)-x(32))^2-d(24)^2;f(25)=(x(21)-x(7))^2+(x(46)-x(32))^2-d(25)^2;f(26)=(x(14)-x(8))^2+(x(39)-x(33))^2-d(26)^2;f(27)=(x(18)-x(8))^2+(x(43)-x(33))^2-d(27)^2;f(28)=(x(13)-x(9))^2+(x(38)-x(34))^2-d(28)^2;f(29)=(x(15)-x(9))^2+(x(40)-x(34))^2-d(29)^2;f(30)=(x(22)-x(9))^2+(x(47)-x(34))^2-d(30)^2;f(31)=(x(11)-x(10))^2+(x(36)-x(35))^2-d(31)^2;f(32)=(x(13)-x(10))^2+(x(38)-x(35))^2-d(32)^2;f(33)=(x(19)-x(10))^2+(x(44)-x(35))^2-d(33)^2;f(34)=(x(20)-x(10))^2+(x(45)-x(35))^2-d(34)^2;f(35)=(x(22)-x(10))^2+(x(47)-x(35))^2-d(35)^2;f(36)=(x(18)-x(11))^2+(x(43)-x(36))^2-d(36)^2;f(37)=(x(25)-x(11))^2+(x(50)-x(36))^2-d(37)^2;f(38)=(x(15)-x(12))^2+(x(40)-x(37))^2-d(38)^2;f(39)=(x(17)-x(12))^2+(x(42)-x(37))^2-d(39)^2;f(40)=(x(15)-x(13))^2+(x(40)-x(38))^2-d(40)^2;f(41)=(x(19)-x(13))^2+(x(44)-x(38))^2-d(41)^2;f(42)=(x(15)-x(14))^2+(x(40)-x(39))^2-d(42)^2;f(43)=(x(16)-x(14))^2+(x(41)-x(39))^2-d(43)^2;f(44)=(x(20)-x(16))^2+(x(45)-x(41))^2-d(44)^2;f(45)=(x(23)-x(16))^2+(x(48)-x(41))^2-d(45)^2;f(46)=(x(18)-x(17))^2+(x(43)-x(42))^2-d(46)^2;f(47)=(x(19)-x(17))^2+(x(44)-x(42))^2-d(47)^2;f(48)=(x(20)-x(19))^2+(x(45)-x(44))^2-d(48)^2;f(49)=(x(23)-x(19))^2+(x(48)-x(44))^2-d(49)^2;f(50)=(x(24)-x(19))^2+(x(49)-x(44))^2-d(50)^2;f(51)=(x(23)-x(21))^2+(x(48)-x(46))^2-d(51)^2;f(52)=(x(23)-x(22))^2+(x(48)-x(47))^2-d(52)^2;end主文件:d=[0.9607 0.4399 0.8143 1.3765 1.2722 0.5294 0.6144 0.3766 0.6893 0.94880.8000 1.1090 1.1432 0.4758 1.3402 0.7006 0.4945 1.0559 0.6810 0.3587 0.3351 0.2878 1.1346 0.3870 0.7511 0.4439 0.8363 0.3208 0.1574 1.2736 0.5781 0.92540.6401 0.2467 0.4727 1.3840 0.4366 1.0307 1.3904 0.5725 0.7660 0.4394 1.09521.0422 1.8255 1.4325 1.0851 0.4995 1.2277 1.1271 0.7060 0.8052]';x0=[zeros(1,1),ones(1,24),zeros(1,1),ones(1,24)];[x,norm1]=lsqnonlin(@location,x0,[],[],[],d);xnorm1运行结果x =Columns 1 through 100 0.1925 1.3539 0.8210 0.6910 1.11740.7470 0.9049 0.4348 1.0297Columns 11 through 200.4536 -0.4604 0.7045 0.5812 0.3521 0.12710.4361 1.5726 1.3993 0.9407Columns 21 through 300.2642 1.5103 0.9707 0.3404 0.8626 00.9330 1.6449 0.5483 0.9793Columns 31 through 401.3858 1.2540 0.9459 0.6425 1.2754 1.24390.2204 0.4145 1.2862 0.8651Columns 41 through 500.3007 1.2927 0.4275 0.7643 0.9601 1.83231.3226 1.9180 1.0981 1.1166norm1 =0.0316改变初值:x0=[zeros(1,2),ones(1,22),zeros(1,2),ones(1,22)];结果是:x =Columns 1 through 100 0.8285 0.5479 0.8712 0.8802 1.5054 0.7397 1.0346 0.0074 1.3647Columns 11 through 201.0327 -0.4290 0.4778 0.6123 0.1921 1.4165 0.6782 1.3906 1.2647 1.0951Columns 21 through 300.0732 1.0151 0.1085 0.7128 1.4644 1.00001.5112 0.0944 0.5051 0.9830Columns 31 through 400.8822 0.7628 0.6989 1.0033 0.7893 1.2701 0.3074 0.6494 0.9350 1.1299Columns 41 through 501.6768 1.1750 -0.0659 0.2455 0.6879 1.1010 0.3047 0.4028 1.2196 1.2407Columns 51 through 521.0000 1.0000norm1 =0.2330这一组norm1较大,因此第一组初值较好。