确定搜索区间子程序:.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
确定搜索区间子程序:.doc

确定搜索区间子程序: function [a,b]=range(f,t,t0) h=1;%固定步长为1 f0=double(subs(f,t,t0)); t2=t0+h; f2=double(subs(f,t,t2)); if(f2=f0) t1=t2;f1=f2;h=-h; else t1=t0;f1=f0;t0=t2;f0=f2;h=2*h; end t2=t0+h; f2=subs(f,t,t2); while(f2=f0) t1=t0;f1=f0;t0=t2;f0=f2;h=2*h; t2=t0+h; f2=subs(f,t,t2); end c=[t1,t2]; a=min(c); b=max(c); 直线搜索子程序: function [y,t3,n]=g_ls(f,t,t0,e) n=1; [a,b]=range(f,t,t0); bt=0.618; af=0.382; t2=af+bt*(b-a); f2=subs(f,t,t2); t1=a+b-t2;f1=subs(f,t,t1); while( abs(t1-t2)=e) n=n+1; if f1=f2 b=t2;t2=t1;f2=f1; t1=a+b-t2;f1=subs(f,t,t1); else a=t1;t1=t2;f1=f2;t2=af+bt*(b-a);f2=subs(f,t,t2); end end t3=0.5*(t1+t2); y=double(subs(f,t,t3)); end 改进的最速下降法子程序: function [y,xx,m]=m_ls(f,x,x0) k=1; syms t j=jacobian(f,x); p=subs(j,x,x0); f0=subs(f,x,x0-t*p); [y,t1]=g_ls(f0,t,0,1e-3); x1=x0-t1*p; p=subs(j,x,x1); f1=subs(f,x,x1-t*p); [y,tz]=g_ls(f1,t,0,1e-3); z=x1-tz*p; p=z-x0; f0=subs(f,x,z-t*p); [y,t2]=g_ls(f0,t,0,1e-3); x2=z-p*t2; f1=y; while(h_end(f,x,x1,x2, 1e-5, 1e-5, 1e-4)==0) x0=x1; x1=x2; t1=t2; k=k+1; p=subs(j,x,x1); f1=subs(f,x,x1-t*p); [y,tz]=g_ls(f1,t,0,1e-3); z=x1-tz*p; p=z-x0; f0=subs(f,x,z-t*p); [y,t2]=g_ls(f0,t,0,1e-3); x2=z-p*t2; f1=y; end m=k; y=y; xx=x2; H终止准则子程序: function y= h_end(f,x,x0,x1,e1,e2,e3) syms s_x s_x=x; grad=jacobian(f,s_x); f0=double(subs(f,s_x,x0)); f1=double(subs(f,s_x,x1)); gv=norm(double(subs(grad,s_x,x0))); if (gve3)((norm(x1-x0)/(norm(x0)+1))1)(abs(f1-f0)/(abs(f0)+1)2) y=1; else y=0; end 主程序: 问题1:求一元函数f(t)=t^4+3*t^2+1的极小点,设初始点t0=0 程序1:syms t f=t^4+3*t^2+1; [y,tv,n]=g_ls(f,t,0,1e-3) 结果输出1: y =1.0000 tv =2.6757e-004 n =58 问题2:计算四元正定二次函数f(x1,x2,x3,x4)=x1^2+2*x2^2+3*x3^2+4*x4^2的极小点,设初始点x0=[1 1 1 1] 程序2:syms x1 x2 x3 x4 f=x1^2+2*x2^2+3*x3^2+4*x4^2; x=[x1 x2 x3 x4]; x0=[1 1 1 1]; [y,xx,m]=m_ls(f,x,x0) 结果输出2: y =1.1087e-011 xx =1.0e-005 * -0.0294 0.0391 0.0971 -0.1402 m = 9 问题3:计算函数f(x1,x2,x3,x4,x5

文档评论(0)

shbky123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档