收藏 分销(赏)

最速下降法与牛顿法结合求无约束最优值.doc

上传人:pc****0 文档编号:8315984 上传时间:2025-02-09 格式:DOC 页数:3 大小:27KB 下载积分:10 金币
下载 相关 举报
最速下降法与牛顿法结合求无约束最优值.doc_第1页
第1页 / 共3页
最速下降法与牛顿法结合求无约束最优值.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
最速下降法与牛顿法结合求无约束最优值.txt珍惜生活——上帝还让你活着,就肯定有他的安排。雷锋做了好事不留名,但是每一件事情都记到日记里面。哈哈,我已经实现了最速下降法语牛顿发的结合,并且还可以动画演示其求解最优值的迭代过程。都已在程序上实现了。(matlab).运行的时,最速下降精度不要弄得太小,到后面的牛顿精度就可以取任意值了。 tic clc;clear; syms x1 x2 G=[]; G=input('请输入想x1^2,x2^2,x1*x2,x1,x2,常系数,如[1,2,3,4,5,6] 系数向量=:'); a=G(1,1);b=G(1,2);c=G(1,3);d=G(1,4);e=G(1,5);g=G(1,6); f=a*x1^2+b*x2^2+c*x1*x2+d*x1+e*x2+g; %画出原始图像 figure; x11=-100:0.5:100; x22=x11; [x11,x22]=meshgrid(x11,x22); f11=a.*x11.^2+b*x22.^2+c*x11.*x22+d.*x11+e.*x22+g; surf(f11),grid on,hold on; %画出原始图像 df1=diff(f,x1);df2=diff(f,x2);%对函数进行求一阶导 DF=[df1;df2]; df11=diff(df1,x1);df12=diff(df1,x2); df21=diff(df2,x1);df22=diff(df2,x2);%这里进行求函数二阶导数 DEE=[df11,df12;df21,df22]; x=input('请输入x的初始值为x=[x1,x2],x=:'); x=x'; E=input('请输入你所要求的最速下降法的精度数(一般取3~5)E=:'); %这里进行一些相关初始值的计算 T=[]; d=T; T(:,1)=subs(DF,[x1,x2],[x(1),x(2)]); TH=subs(DEE,[x1,x2],[x(1),x(2)]); %这里进行一些相关初始值的计算 disp('由于你输入的初始值,这里将开始最速下降法搜寻:'); for k=1:100000 d(:,1)=-T(:,1);%d(k)是x(k+1)=x(k)+A(k)*d(k) A(1)=(T(:,1)'*T(:,1))/(T(:,1)'*TH*T(:,1)); TH=subs(DEE,[x1,x2],[x(1,k),x(2,k)]); T(:,k)=subs(DF,[x1,x2],[x(1,k),x(2,k)]); d(:,k+1)=-T(:,k); A(k)=(T(:,k)'*T(:,k))/(T(:,k)'*TH*T(:,k)); KLJ(:,k)=norm(T(:,k)); GG(k)=subs(f,[x1,x2],[x(1,k),x(2,k)]); if norm(T(:,k))<E disp('有这里你就进入牛顿法求最优了'); disp(' '); disp('FX就是最速下的解 ') FX=subs(f,[x1,x2],[x(1,k),x(2,k)]) disp(' '); disp('对应的x值为 '); x(:,k) break; end x(:,k+1)=x(:,k)+A(k)*d(:,k); end toc %画出最速下降迭代点最终停留位置 figure; plot3(x11,x22,f11,'r'),grid on; for tk=1:k h1=line( 'Color' ,[0 1 0], 'Marker' , '.' , 'MarkerSize' ,20, 'EraseMode' , 'xor' ); set(h1, 'xdata' ,x(1,tk), 'ydata' ,x(2,tk), 'zdata' , GG(tk)); drawnow; % 刷新屏幕 pause(0.1); end fop1=getframe(gcf) image(fop1.cdata) %画出最速下降迭代点最终停留位置 tic Y=x(:,k); EE=input('请输入牛顿最终的精度系数EE=:'); TT(:,1)=subs(DF,[x1,x2],[Y(1),Y(2)]); THH=subs(DEE,[x1,x2],[Y(1),Y(2)]); aa=1; disp('程序可以运行到这里'); for kk=1:10000 dd(:,kk)=-inv(THH)*TT(:,kk); Y(:,kk+1)=Y(:,kk)+ aa*dd(:,kk); THH=subs(DEE,[x1,x2],[Y(1,kk),Y(2,kk)]); TT(:,kk+1)=subs(DF,[x1,x2],[Y(1,kk+1),Y(2,kk+1)]); PP=norm(TT(:,kk)); GG1(kk)=subs(f,[x1,x2],[Y(1,kk),Y(2,kk)]); if PP<EE disp('到这里您已经得到全局最优解了'); FXX=subs(f,[x1,x2],[Y(1,kk),Y(2,kk)]) disp(' '); disp('对应的x值为: '); Y(:,kk) break; end end FXX=subs(f,[x1,x2],[Y(1,kk),Y(2,kk)]) toc %画出最终极值点停留位置 figure; plot3(x11,x22,f11,'r'),grid on; for J=1:kk h2=line( 'Color' ,[0 1 0], 'Marker' , '.' , 'MarkerSize' ,40, 'EraseMode' , 'xor' ); set(h2, 'xdata' ,Y(1,J), 'ydata' ,Y(2,J), 'zdata' , GG1(1,J)); pause(0.1); fop=getframe(gcf); image(fop.cdata); end disp('现在程序已经结束了'); %画出最终极值点停留位置 [attach]3912[/attach]
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服