《鲍威尔算法matlab程序-f.doc》由会员分享,可在线阅读,更多相关《鲍威尔算法matlab程序-f.doc(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date鲍威尔算法matlab程序-ffunction f=fun(x)function f=fun(x)f=10*(x(1)+x(2)-5)2+(x(1)-x(2)2;function f=fx(x0,alpha,s)x1=x0+alpha*s;f=fun(x1);function f=fsearch(x0,s)%利用进退法确定高低高区间alpha1=0;h=0.1;alp
2、ha2=alpha1+h;f1=fx(x0,alpha1,s);f2=fx(x0,alpha2,s);if f1f2alpha3=alpha2+h;f3=fx(x0,alpha3,s);while f2f3alpha1=alpha2;alpha2=alpha3;alpha3=alpha3+h;f2=f3;f3=fx(x0,alpha3,s);endelseh=-h;v=alpha1;alpha1=alpha2;alpha2=v;v=f1;f1=f2;f2=v;alpha3=alpha2+h;f3=fx(x0,alpha3,s);while f2f3alpha1=alpha2;alpha2=al
3、pha3;alpha3=alpha3+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);while abs(a-b)0.001if f1f2a=alpha1;alpha1=alpha2;f1=f2;alpha2=a+0.618*(b-a);f2=fx(x0,alpha2,s);elseb=alpha2;alpha2=
4、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;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);%
5、映射点x3=2*x2-x0;G3=fun(x3);if G3G0 & (G0-2*G2+G3)*(G0-G2-deltam)2G3x0=x3;elsex0=x2;endEnd子文件JT,JH进退法程序代码56555 .function minx,maxx = minJT(f,x0,h0,eps)format long;if nargin = 3eps = 1.0e-6;endx1 = x0;k = 0;h = h0;while 1x4 = x1 + h;k = k+1;f4 = subs(f, findsym(f),x4);f1 = subs(f, findsym(f),x1);if f4 eps & k fua = l;l = u;u = a + 0.618*(b - a);elseb = u;u = l;l = a + 0.382*(b-a);endk = k+1;tol = abs(b - a);endif k = 100000disp(215 ?208 ?214 O);x = NaN;minf = NaN;return;endx = (a+b)/2;minf = subs(f, findsym(f),x);format short;-
限制150内