抛物线法和最速下降法优化程序1.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最优化方法编程 通过matlab编程,对老师上课讲的几种方法进行程序实现,并对算法的原理进行简要的描述。 (二)抛物线法 例3:求函数的最小值,初始搜索区间为[0,3],终止误差为=0.05 抛物线法的matlab程序为: function[E,n]=pao(F_1,a,b,l) xa(1)=a;xc(1)=b;n=1; xb(1)=(xa(1)+xc(1))/2; Xa(1)=feval(F_1,xa(1));Xb(1)=feval(F_1,xb(1));Xc=feval(F_1,xc(1)); x(1)=(det([1 Xa(1) xa(1)^2;1 Xb(1) xb(1)^2;1 Xc(1) xc(1)^2])/det([1 xa(1) xa(1)^2;1 xb(1) xb(1)^2;1 xc(1) xc(1)^2]))/(-2*(det([1 xa(1) Xa(1);1 xb(1) Xb(1);1 xc(1) Xc(1)])/det([1 xa(1) xa(1)^2;1 xb(1) xb(1)^2;1 xc(1) xc(1)^2]))); X(1)=feval(F_1,x(1)); Y(1)=abs(x(1)-xb(1)); while(Y(n)l) if Xc(n)Xa(n) k2=sort([xa(n) xb(n) x(n)]); xa(n+1)=k2(1);xb(n+1)=k2(2);xc(n+1)=k2(3); else k2=sort([xb(n) xc(n) x(n)]); xa(n+1)=k2(1);xb(n+1)=k2(2);xc(n+1)=k2(3); end n=n+1; Xa(n)=feval(F_1,xa(n));Xb(n)=feval(F_1,xb(n));Xc(n)=feval(F_1,xc(n)); x(n)=(det([1 Xa(n) xa(n)^2;1 Xb(n) xb(n)^2;1 Xc(n) xc(n)^2])/det([1 xa(n) xa(n)^2;1 xb(n) xb(n)^2;1 xc(n) xc(n)^2]))/(-2*(det([1 xa(n) Xa(n);1 xb(n) Xb(n);1 xc(n) Xc(n)])/det([1 xa(n) xa(n)^2;1 xb(n) xb(n)^2;1 xc(n) xc(n)^2]))); X(n)=feval(F_1,x(n)); Y(n)=abs(x(n)-xb(n)); end E=[xa xb xc x Xa Xb Xc X Y]; disp( xa xb xc x f(xa) f(xb) f(xc) f(x) !x-xb!) function y=F_1(x) y=x^3-3*x+2; 运行语句:[E,n]=pao(F_1,0,3,0.05) 运行结果: 当运算5次后|x-xb|=0.01760.05,满足精度要求,此时求得的最优解为1.0002,通过求导可知其最优解为1,所以用程序算的结果已经是非常的接近了。 (三)最速下降法 例4:用最速下降法求解,初始点为【1,1】=0.1 最速下降法的matlab程序: clear xx=-2:0.01:2; yy=-2:0.01:2; [X,Y]=meshgrid(xx,yy); for i=1:401 for j=1:401 y(1)=X(i,j); y(2)=Y(i,j); Z(i,j)=f_df(y); end end hold on %mesh(X,Y,Z) contour(X,Y,Z,50) xlabel(x) ylabel(y) zlabel(z) %hold on syms x1 x2 f lmda x=[1 1]; plot(x(1),x(2),*); [fx,df]=f_df(x); d=-df; xs=[x1 x2]; [h,dh]=f_df(xs); while(sqrt(df(1)^2+df(2)^2)0.1) xs(1)=x(1)+lmda*d(1); xs(2)=x(2)+lmda*d(2); h1=compose(h,xs(1)); h2=compose(h1,xs(2)); dh2=diff(h2,lmda); lm=solve(dh2); lm=double(lm); x(1)=x(1)+lm*

文档评论(0)

考试教学资料 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档