资源描述:
《鲍威尔算法matlab程序-f.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、-------------精选文档-----------------functionf=fun(x)f=10*(x(1)+x(2)-5)^2+(x(1)-x(2))^2;functionf=fx(x0,alpha,s)x1=x0+alpha*s;f=fun(x1);functionf=fsearch(x0,s)%利用进退法确定高低高区间alpha1=0;h=0.1;alpha2=alpha1+h;f1=fx(x0,alpha1,s);f2=fx(x0,alpha2,s);iff1>f2alpha3=alpha2+h;f3=fx(x0
2、,alpha3,s);whilef2>f3alpha1=alpha2;alpha2=alpha3;alpha3=alpha3+h;f2=f3;f3=fx(x0,alpha3,s);endelse可编辑-------------精选文档-----------------h=-h;v=alpha1;alpha1=alpha2;alpha2=v;v=f1;f1=f2;f2=v;alpha3=alpha2+h;f3=fx(x0,alpha3,s);whilef2>f3alpha1=alpha2;alpha2=alpha3;alpha3=al
3、pha3+h;f2=f3;f3=fx(x0,alpha3,s);endenda=min(alpha1,alpha3);b=max(alpha1,alpha3);%利用黄金分割点法求解alpha1=a+0.382*(b-a);alpha2=a+0.618*(b-a);可编辑-------------精选文档-----------------f1=fx(x0,alpha1,s);f2=fx(x0,alpha2,s);whileabs(a-b)>0.001iff1>f2a=alpha1;alpha1=alpha2;f1=f2;alpha2
4、=a+0.618*(b-a);f2=fx(x0,alpha2,s);elseb=alpha2;alpha2=alpha1;f2=f1;alpha1=a+0.382*(b-a);f1=fx(x0,alpha1,s);endendf=0.5*(a+b);clear%初始点x0=[0;0];%搜索方向可编辑-------------精选文档-----------------e1=[1;0];e2=[0;1];G0=fun(x0);F0=G0;%第一次迭代%沿着e1alpha1=fsearch(x0,e1);x1=x0+alpha1*e1;
5、F1=fun(x1);delta1=F0-F1;%沿着方向e2;alpha2=fsearch(x1,e2);x2=x1+alpha2*e2;F2=fun(x2);G2=F2;delta2=F1-F2;deltam=max(delta1,delta2);%映射点x3=2*x2-x0;G3=fun(x3);ifG36、s;%沿着方向s进行搜索alpha3=fsearch(x2,s);x3=x2+alpha2*s;x0=x3;elseifF2>G3x0=x3;elsex0=x2;endEnd子文件JT,JH进退法程序代码?56555.function[minx,maxx]=minJT(f,x0,h0,eps)formatlong;ifnargin==3eps=1.0e-6;end可编辑-------------精选文档-----------------x1=x0;k=0;h=h0;while1x4=x1+h;k=k+1;f4=subs(f,find
7、sym(f),x4);f1=subs(f,findsym(f),x1);iff48、rmatlong;ifnargin==3eps=1.0e-6;endl=a+0.382*(b-a);u=a+0.618*(b-a);k=1;tol=b-a;whiletol>eps&&k<100000fl=subs(f,findsym