数值实验二.doc

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

最优化数值实验报告二 实验目的: 1,能够将非线性方程组转化为有约束的问题,并采用合适的方法进行求解,主要是外惩罚函数和广义乘子法。 2,用MATLAB变成求解问题,并对各种方法的计算过程和结果进行分析。 实验原理:(略) 实验内容: (主要是《最优化练习题022》中的第一题》,结合数值实验一进行比较分析。) 求解下面的方程组 把它们转化为有约束的问题,处理的方法有几种: (1) 将第1和第2两个方程平方后相加,作为目标函数,将第3个方程作为约束方程,同样可以转化为有等式约束的问题。 (2) 将第1个方程平方之,作为目标函数,而将另外2个方程作为等式约束。如果我们 来求解在这2个等式约束条件下,最小化目标函数,就构成了一个有约束的最优化问题。 (3) 也可选第3个方程的平方作为目标函数,另外2个方程为约束条件,等等。 但这些问题没有本质区别,在下面我们均以第一种处理方法进行讨论。即求解如下的有约束的问题。 但是实际上,上面提到的两种方法的主要思想是借助罚函数将约束问题转化为无约束问题,用无约束的最优化方法求解(下面我们一律选择的是BFGS法,在第一次数值实验中,通过对无约束问题各种求解方法的分析比较,从各个方面的均衡来说,BFGS法是较理想的)。 另外,同第一次数值实验中的一样,在做一维搜索时,用进退法和黄金分割法来实现的,其中进退法确定一个单峰区间,而黄金分割法进行精确的一维搜索。(分别对应程序中的jintuifa.m和gold.m,具体程序见附录)。步长仍然选择为0.0125。(这些和实验一中是一样的,为了保证搜索能够很好的进行。) 外点惩罚函数法 外点惩罚函数法就是通过选择罚因子做出辅助的惩罚函数,从而将约束问题转化为无约束问题的求解。罚因子越大,则得到的近似解越接近于实际的最优解。 程序中采用SUMT方法来求解,即从某个开始,求解,从而得到一个满足某种精度的极小点。实验中选取初始为1,放大系数1.5,当,其中时候,停止计算。 程序: syms x1 x2 x3 t r; f1=3*x1-cos(x2*x3)-1/2;f2=x1^2-81*(x2+0.1)+sin(x3)+1.06;f3=exp(-x1*x2)+20*x3+1/3*(10*3.14159-3); f=f1^2+f2^2+t*f3^2;p=t*f3^2; x=[x1,x2,x3];xt=[x1,x2,x3,t]; df=jacobian(f,x);df=df.; error1=1e-6;x0=[0,0,0];t0=1;c0=1.5;j=0; error2=1e-6;H0=[1,0 0;0,1 0;0 0 1];k=0; g=subs(p,{x1,x2,x3,t},{x0(1),x0(2),x0(3),t0}); g=double(g); while(norm(g)error1) y=subs(f,t,t0); dy=jacobian(y,x);dy=dy.; g1=subs(dy,x,x0);double(g1); while(norm(g1)error2) %下面为BFGS方法求解无约束的问题 if k==0 d=-H0*g1; else H1=H0+(1+qk*H0*qk/(pk*qk))*(pk*pk)/(pk*qk)-(pk*qk*H0+H0*qk*pk)/(pk*qk); d=-H1*g1;H0=H1; end z=subs(y,x,x0+r*d); result=jintuifa(z,r); result2=gold(z,r,result); step=result2; x0=x0+step*d; g0=g1;g1=subs(dy,x,x0); qk=g1-g0; pk=step*d; k=k+1; end j=j+1; t0=t0*c0; g=subs(p,{x1,x2,x3,t},{x0(1),x0(2),x0(3),t0}); g=double(g); end x0 k j t0 g min=subs(f1^2+f2^2,[x1 x2 x3],x0) 结果: 由此方法得到的最优解为(0.4996,-0.0900,-0.5259),迭代的次数为1,。取得的最优值为8.6570e-020。这是因为从BFGS方法求得的最优解已经精度非常高了,所以迭代次数很少。但是我们若

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档