欢迎来到天天文库
浏览记录
ID:51149288
大小:19.65 KB
页数:2页
时间:2020-03-19
《用最速下降法求目标函数程序.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用最速下降法求目标函数程序用最速下降法求目标函数的极小点,设X(0)=[0.75,—1.25]T,终止条件为。解:首先求出在初始点X(0)=[0.75,—1.25]T处的梯度,梯度的模和单位负梯度方向∇fx0=∂f(x(0))∂x1∂f(x(0))∂x2=4*0.753-1.250.75+2*(1-1.25)=0.43750.25(1)
2、
3、∇f(x(0))
4、
5、=∂fx0∂x12+(∂f(x(0))∂x2)2=0.43752+0.252=0.5039(2)d(0)=-∇fx0
6、
7、∇f(x(0))
8、
9、=
10、0.43750.250.5039=0.8680.496(3)沿着单位负梯度方向进行一维搜索。由于x1=x0+a0d0(4)将上式带入f(x)方程中,令df(x1)da0=0,得出最优步长a0。再将a0带入(4)式中求出x1以及新点的函数值fx1。如此往复迭代,直到得到最优解。最速下降法的M文件如下:symsx1x2arzf=x1^4+x1*x2+(x2+1)^2;x01=0.75;x02=-1.25;v=[x1,x2];gf=jacobian(f,v);gf0=subs(subs(gf,x01),x
11、02);gm=sqrt((gf0(1))^2+(gf0(2))^2);dd=vpa(gm,5);%dd为梯度的模disp(dd);x1=x01;x2=x02;n=0;while(dd>0.0001)d=-gf0/dd;%d为单位负梯度方向b=4*d(1)^4;c=12*x1*d(1)^3;e=12*x1^2*d(1)^2+2*d(1)*d(2)+2*d(2)^2;h=4*x1^3*d(1)+x2*d(1)+x1*d(2)+2*d(2)*x2+2*d(2);p=[b,c,e,h];ans=roots(
12、p);a=min(ans);a=vpa(a,5);t=sqrt(r^2+z^2);gf=jacobian(f,v);x1=x1+a*d(1);x2=x2+a*d(2);gf0=subs(subs(gf,x1),x2);r=gf0(1);z=gf0(2);gm=subs(subs(t,r),z);dd=vpa(gm,5);n=n+1;endx1=vpa(x1,4);x2=vpa(x2,4);a=vpa(a,5);f=x1^4+x1*x2+(x2+1)^2;disp('x1=');disp(x1);di
13、sp('x2=');disp(x2);disp('f=');disp(f);disp('a=');disp(a);disp('n=');disp(n);运行结果如下:x1=0.6959x2=-1.348f=-0.58244517438901951924335436198645a=0.00002297n=9dd=0.00007193
此文档下载收益归作者所有