资源描述:
《最优化方法之修正牛顿法matlab源码(含黄金分割法寻找步长).pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、revisenewton.msymsx1x2x3xx;%f=x1*x1+x2*x2-x1*x2-10*x1-4*x2+60;%f=x1^2+2*x2^2-2*x1*x2-4*x1;f=100*(x1^2-x2^2)+(x1-1)^2;hessen=jacobian(jacobian(f,[x1,x2]),[x1,x2]);gradd=jacobian(f,[x1,x2]);X0=[0,0]';B=gradd';x1=X0(1);x2=X0(2);A=eval(gradd);%whilesqrt(A(1)^2+A(2)^2)>0.1i=0;whilenorm(A)>0.1i=i+1
2、;fprintf('thenumberofiterationsis:%d',i)ifi>10break;endB1=inv(hessen)*B;B2=eval(B1);%X1=X0-B2%X0=X1;f1=x1+xx*B2(1);f2=x2+xx*B2(2);%ff=norm(BB)?symsx1x2;fT=[subs(gradd(1),x1,f1),subs(gradd(2),x2,f2)];ff=sqrt((fT(1))^2+(fT(2))^2);MinData=GoldData(ff,0,1,0.01);x1=X0(1);x2=X0(2);x1=x1+MinData*B
3、2(1)x2=x2+MinData*B2(2)A=eval(gradd)EndGoldData.mfunctionMiniData=GoldData(f,x0,h0,eps)symsxx;ifnargin==3eps=1.0e-6;end[minx,maxx]=minJT(f,x0,h0,eps);MiniData=Gold(f,minx,maxx,0.001);minJT.mfunction[minx,maxx]=minJT(f,x0,h0,eps)%目标函数:f;%初始点:x0;%初始步长:h0;%精度:eps;%目标函数取包含极值的区间左端点:minx;%目标函数取包含极值
4、的区间又端点:maxx;symsxx;formatlong;ifnargin==3eps=1.0e-6;endx1=x0;k=0;h=h0;while1x4=x1+h;%试探步k=k+1;%f4=subs(f,findsym(f),x4);%f1=subs(f,findsym(f),x1);xx=x4;f4=eval(f);xx=x1;f1=eval(f);iff45、nx=min(x1,x3);maxx=x1+x3-minx;formatshort;Gold.mfunctionMini=Gold(f,a0,b0,eps)symsx;formatlong;symsxx;u=a0+0.382*(b0-a0);v=a0+0.618*(b0-a0);k=0;a=a0;b=b0;array(k+1,1)=a;array(k+1,2)=b;while((b-a)/(b0-a0)>=eps)Fu=subs(f,xx,u);Fv=subs(f,xx,v);if(Fu<=Fv)b=v;v=u;u=a+0.382*(b-a);k=k+1;elseif(Fu>Fv
6、)a=u;u=v;v=a+0.618*(b-a);k=k+1;endarray(k+1,1)=a;array(k+1,2)=b;endxxMini=(a+b)/2;